支持的 Redis 配置

本页面介绍 Memorystore for Redis 可用的最大内存政策和其他 Redis 配置。如果调整了配置,不需要重启 Redis 实例。

如需了解如何修改下面列出的配置,请参阅配置 Redis 实例

最大内存政策

当 Redis 实例内存已满且有新的写入时,Redis 会根据实例的最大内存政策逐出键,为写入腾出空间。Memorystore for Redis 的默认最大内存政策volatile-lru。您还可以使用以下最大内存政策之一:

  • noeviction:在 Redis 实例达到最大内存时返回错误。不会覆盖或逐出任何数据。
  • allkeys-lfu:适用于 Redis 4.0 或更高版本。从整个键集中逐出最不常用的 (LFU) 键。
  • allkeys-lru:从整个密钥集中逐出最近最少使用的 (LRU) 键。
  • volatile-lfu:适用于 Redis 4.0 或更高版本。逐出通过 TTL(存留时间)到期设置的最不常用的键。
  • volatile-lru:逐出通过 TTL 到期时间设置的最近最少使用的 (LRU) 键。
  • allkeys-random:逐出整个键空间中的随机键。
  • volatile-random:从通过 TTL 到期设置的那些键中逐出随机键。
  • volatile-ttl:从通过 TTL 到期设置的那些键中逐出 TTL 最短的键。

可修改的配置参数

您可以在创建或更新 Memorystore for Redis 实例时修改以下参数。


参数 说明 可接受的值
activedefrag Redis 4.0 或更高版本。用于释放通过标准 OSS Redis 内存碎片行为绑定的实例内存。 no(默认)
yes
数据库 Redis 版本 3.2 或更高版本。指定 Redis 服务器上的数据库数量。 1-100
默认值为 16
lazyfree-lazy-eviction Redis 7.0 或更高版本。启用/停用懒惰释放功能以进行驱逐。no 会停用此配置。如需了解详情,请参阅 REDIS.CONF no(默认)
yes
lazyfree-lazy-expire Redis 7.0 或更高版本。启用/停用延迟释放到过期。no 会停用此配置。如需了解详情,请参阅 REDIS.CONF no(默认)
yes
lazyfree-lazy-user-del Redis 7.0 或更高版本。为用户 DEL 启用/停用延迟释放。no 会停用此配置。如需了解详情,请参阅 REDIS.CONF no(默认)
yes
lazyfree-lazy-user-flush Redis 7.0 或更高版本。为用户刷新启用/停用延迟释放。no 会停用此配置。如需了解详情,请参阅 REDIS.CONF no(默认)
yes
lfu-decay-time Redis 4.0 或更高版本。给定键的 LFU 频率计数器将除以 2(或者,如果计数器小于 10,则递减 1)之前的时间,以分钟为单位。如需了解详情,请参阅 REDIS.CONF 文件。 “长”数据类型的正整数
(默认值 = 1)
lfu-log-factor Redis 4.0 或更高版本。确定频率计数器如何表示键命中数。在修改默认配置之前,请先了解 lfu-log-factor 配置如何在 REDIS.CONF 文件中工作。 “长”数据类型的正整数
(默认值 = 10)
maxmemory-clients Redis 7.0 或更高版本。通过此配置,用户可以控制客户端的内存用量上限。

普通/发布/订阅客户端的总内存用量。如果达到此上限,系统会驱逐内存用量最多的客户端
默认值为 0%(无限制)。可接受的值为介于 0%100% 之间的整数百分比值。表示客户端存储空间受实例 maxmemory 限制的百分比。
maxmemory-gb 指定您的逐出政策生效的可调整限制。例如,如果有一个 10 GB 实例并将 maxmemory-gb 设置为 8,则当数据占用 8 GB 实例内存时,逐出政策会生效。这样会余下 2 GB 的内存作为开销。默认情况下,maxmemory-gb 设置为您的实例容量。如需详细了解如何充分利用 maxmemory-gb 配置,请参阅 Memorystore 内存管理最佳实践

此配置在 Google Cloud 控制台中显示为 maxmemory-percent。使用控制台时,您可以将 maxmemory-percent 设置为实例容量的百分比,而不是特定的 GB 数。
以整数或小数表示的 GB 数。
示例:
10 指定 10 GB 的 maxmemory-gb
1.5 指定 1.5 GB 的 maxmemory-gb
maxmemory-gb 可以减少到实例容量的 20%。
maxmemory-policy 指定当实例数据达到 maxmemory-gb 限制时 Redis 遵循的行为。如需了解每个政策的行为,请参阅最大内存政策

如需详细了解开源 Redis 最大内存政策,请参阅开源 Redis LRU 缓存页面
noeviction
allkeys-lru
volatile-lru(默认)
allkeys-random
volatile-random
volatile-ttl
volatile-lfu(Redis 4.0 和更高版本)
allkeys-lfu(Redis 4.0 和更高版本)
notify-keyspace-events 允许客户端订阅某些键空间事件的通知。如需了解详情,请参阅 Redis 网站上的 Redis 键空间通知页面。 ""(默认)
K
键空间事件,使用 __keyspace@__ 前缀发布。
E
键空间事件,使用 __keyspace@__ 前缀发布。
g
一般命令(非特定于类型),例如 DEL、EXPIY 或 RENAME
$
String 命令
l
List 命令
s
Set 命令
h
Hash 命令
z
Sorted set 命令
x
过期事件(每次有键过期时生成的事件)
e
逐出事件(当为最大内存逐出键时,生成的事件)
A
g$lshzxe 的别名,因此“AKE”字符串表示所有事件。
stream-node-max-bytes Redis 5.0 或更高版本。 Redis 流式数据结构使用 Radix 树来存储内容。stream-node-max-bytes 参数指定可用于在单个树节点中存储内容的最大字节数。达到此限制后,新内容将存储在新的树节点中。 整数 0 及以上。
(默认值 = 4096)
0 指定无限大小的树节点。
stream-node-max-entries Redis 5.0 或更高版本。Redis 流式数据结构使用 Radix 树来存储内容。stream-node-max-entries 参数指定可以存储在单个节点中的内容数。当达到此限制时,新内容将存储在新的树节点中。 整数 0 及以上。
(默认值 = 100)
0 指定内容数不受限制的树节点。
timeout 空闲客户端连接终止前的秒数。但是,如果将 timeout 设置为 0,则空闲客户端不会超时并保持连接,直到客户端发出终止为止。 0(默认值)
整数 >= 120
单位 =

不可修改的配置参数

下表列出了无法在 Memorystore for Redis 中修改的 Redis 配置参数及其默认值。如需详细了解这些配置参数,请参阅 Redis 配置文档。

参数 默认值
lua-time-limit 5000
hash-max-ziplist-entries 2048
hash-max-ziplist-value 1024
list-max-ziplist-size -2
list-compress-depth . 0
set-max-intset-entries 512
zset-max-ziplist-entries 1024
zset-max-ziplist-value 1024
hll-sparse-max-byte 3000
activerehashing
hz 10
databases 16
maxclients 65000
slowlog-log-slower-than 10000
slowlog-max-len 128
repl-diskless-load swapdb
io-threads-do-reads

后续步骤

  • 如要详细了解 Redis 配置,请参阅开源 Redis 配置页面