本页面介绍 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 缓存页面 | noevictionallkeys-lruvolatile-lru(默认)allkeys-randomvolatile-randomvolatile-ttlvolatile-lfu(Redis 4.0 和更高版本)allkeys-lfu(Redis 4.0 和更高版本) | 
| notify-keyspace-events | 允许客户端订阅某些键空间事件的通知。如需了解详情,请参阅 Redis 网站上的 Redis 键空间通知页面。 | ""(默认)K键空间事件,使用 __keyspace@ E键空间事件,使用 __keyspace@ g一般命令(非特定于类型),例如 DEL、EXPIY 或 RENAME $String 命令 lList 命令 sSet 命令 hHash 命令 zSorted set 命令 x过期事件(每次有键过期时生成的事件) e逐出事件(当为最大内存逐出键时,生成的事件) Ag$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 配置页面