Memcached“stats cachedump”命令未显示所有键

Posted

技术标签:

【中文标题】Memcached“stats cachedump”命令未显示所有键【英文标题】:Memcached "stats cachedump" command was not show all keys 【发布时间】:2018-05-12 02:30:14 【问题描述】:

我今天遇到一个奇怪的问题。我通过运行命令“stats items”发现一个slab中有三个项目,但是当我运行命令“stats cachedump 1 0”查看这个slab的项目信息时,只显示两个项目,这个板数为 1。

“stats items”命令的输出:

stats items
STAT items:1:number 3
STAT items:1:number_hot 0
STAT items:1:number_warm 1
STAT items:1:number_cold 2
STAT items:1:age_hot 0
STAT items:1:age_warm 5171
STAT items:1:age 5409
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
STAT items:1:evicted_active 0
STAT items:1:crawler_reclaimed 0
STAT items:1:crawler_items_checked 38
STAT items:1:lrutail_reflocked 2
STAT items:1:moves_to_cold 7
STAT items:1:moves_to_warm 3
STAT items:1:moves_within_lru 1
STAT items:1:direct_reclaims 0
STAT items:1:hits_to_hot 0
STAT items:1:hits_to_warm 1
STAT items:1:hits_to_cold 6
STAT items:1:hits_to_temp 0
END

字段“数字”的值为 3 ;在slab1中有三个项目。

“stats cachedump”命令的输出:

stats cachedump 1 0
ITEM foo [3 b; 0 s]
ITEM mykey [12 b; 0 s]
END

显示两个项目,它们的键是 foo 和 mykey 。

我的 memcached 服务器版本:memcached-1.5.3

这是为什么?喊不是显示三个项目?

【问题讨论】:

其中一项似乎已过期。如果再次执行stats items(在stats cachedump 1 0 命令之后),是否得到相同的结果? @lgor,是的,我得到相同的结果,同时运行stats cachedump 1 0 command 这仅在您的第 3 项已过期的情况下才有意义。您看到的 STAT items:1:number 3 结果可能是由于 Memcached 延迟过期。只有在执行项目搜索之前,它才能知道它已过期。你可以查看官方Mecached wiki 解释更多关于过期如何工作的信息。 【参考方案1】:

我猜它只返回 COLD 项目

这个命令对我有用 lru_crawler metadump $slabid

【讨论】:

标记这样的问题,您喜欢将其作为书签贡献,并查看其他一些 SO 问题。一旦你习惯了***并且获得了更多的分数,你就不需要滥用cmets的答案了:)

以上是关于Memcached“stats cachedump”命令未显示所有键的主要内容,如果未能解决你的问题,请参考以下文章

php memcached怎么用

memcached 为啥要 cas

领会Memcached高可用群集(Memcached主主复制+Keepalived)

Memcached源代码分析 - Memcached源代码分析之消息回应

memcached命令行memcached数据导入和导出PHP链接memcached memcach

华为云Memcached服务对比开源Memcached