您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

内存管理

逐出策略

选择适合应用程序的逐出策略。 Azure Cache for Redis 的默认策略为 volatile-lru,这意味着只有设置了 TTL 值的键才有资格被逐出。 如果没有任何键具有 TTL 值,则系统不会逐出任何键。 如果希望系统允许在内存不足时逐出任何键,那么可以考虑 allkeys-lru 策略。

键过期

为键设置过期值。 过期时会主动删除键,而不会等到出现内存压力的时候。 由于内存压力而开始逐出时,可能会导致服务器负载增多。 有关详细信息,请参阅 EXPIREEXPIREAT 命令的文档。

最小化内存碎片

较大的值可能会在逐出时造成内存碎片化,并可能导致较高的内存使用率和服务器负载。

监视内存使用量

对内存使用量添加监视可确保内存不会用完,并且可以在遇到问题之前缩放缓存。

配置 maxmemory-reserved 设置

配置 maxmemory-reserved 设置可提高系统响应能力:

  • 对于写入密集型工作负载,或者,如果你要在缓存中存储 100 KB 或更大的值,则设置充足的预留尤为重要。 如果使用的是写入密集型工作负载,则以缓存大小的 10% 为基础并增大此百分比。

  • maxmemory-reserved 设置用于配置群集中预留给非缓存操作(例如故障转移期间的复制)的每个实例的内存量(以 MB 为单位)。 设置此值能够在负载变化时具有更一致的 Redis 服务器体验。 对于写入大量数据的工作负载,应将此值设置得较大。 为此类操作保留内存后,无法存储缓存数据。

  • maxfragmentationmemory-reserved 设置用于配置群集中预留以容纳内存碎片的每个实例的内存量(以 MB 为单位)。 设置此值后,当缓存已满或接近满的状态并且碎片比率很高时,Redis 服务器体验更加稳定。 为此类操作保留内存后,无法存储缓存数据。

  • 选择新的内存预留值(maxmemory-reservedmaxfragmentationmemory-reserved)时,请注意此更改对已在运行的包含大量数据的缓存有何影响。 例如,如果你的 53 GB 缓存中已有 49 GB 数据,然后将预留值更改为 8 GB,那么系统的最大可用内存将降至 45 GB。 如果你的当前 used_memoryused_memory_rss 值高于 45 GB 的新限制,则系统需要逐出数据,直到 used_memoryused_memory_rss 均低于 45 GB。 逐出可能会增加服务器负载和内存碎片。 有关 used_memoryused_memory_rss 等缓存指标的详细信息,请参阅used_memory

后续步骤