支持的 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 配置页面