在密钥过期后,Memcached 集群中的当前项目数指标为什么没有减小?

1 分钟阅读
0

在密钥过期后,Memcached 集群中的当前项目数指标为什么没有减小?

解决方法

此行为在意料之中。在生存时间 (TTL) 过期后,Memcached 会使用惰性过期来删除密钥。这意味着,即使密钥已过期,也不会从节点中删除。但是,当有人尝试访问过期密钥时,Memcached 会检查密钥,确认该密钥已过期,然后将其从内存中删除。

如果相应的 Slab 类中没有剩余可用的区块或可用页面来容纳新密钥,则 Memcached 会删除过期密钥,或者如果找不到已过期密钥,则会使用最近最少使用 (LRU) 算法来移出密钥。从内存中删除密钥后,当前项目数指标将减小。

lru_crawler 线程(这是可选的后台线程)也可用于从内存中清除已过期密钥。lru_crawler 是一项保守任务,即使启用,也只能对已过期密钥执行有限的操作。因此,即使已启用 lru_crawler,也可能需要过段时间才会看到当前项目数指标和密钥空间内存的使用量减少。

使用 TTL 可使密钥仅在特定时间长度内可用。如果密钥无效(过期),则最终将被删除。在密钥过期后,无法检索密钥。


相关信息

Memcached 特定的参数

AWS 官方
AWS 官方已更新 4 年前