本页面介绍 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 配置页面