Bash
要在Bash中获取键列表,请按照以下步骤进行。
首先,定义以下包装函数以使其易于使用(复制并粘贴到shell中):
function memcmd() {
exec {memcache}<>/dev/tcp/localhost/11211
printf "%s\n%s\n" "$*" quit >&${memcache}
cat <&${memcache}
}
Memcached 1.4.31及以上版本
你可以使用命令lru_crawler metadump all
来转储缓存中所有项目的(大部分)元数据。
与cachedump
相比,它不会导致严重的性能问题,并且没有转储密钥数量的限制。
通过使用先前定义的函数的示例命令:
memcmd lru_crawler metadump all
查看:ReleaseNotes1431。
Memcached 1.4.30及以下版本
使用items statistics命令获取slab列表,例如:
memcmd stats items
对于每个细纱类别,您可以通过指定细纱id和限制数量(0
- 无限制)来获取项目列表:
memcmd stats cachedump 1 0
memcmd stats cachedump 2 0
memcmd stats cachedump 3 0
memcmd stats cachedump 4 0
...
注意:您需要为每个Memcached服务器执行此操作。
要列出所有存根中的所有键,这是一行命令(每个服务器一个):
for id in $(memcmd stats items | grep -o ":[0-9]\+:" | tr -d : | sort -nu); do
memcmd stats cachedump $id 0
done
注意:上述命令可能在访问项目时导致严重的性能问题,因此不建议在生产环境中运行。
注:
stats cachedump
仅转储由后台线程管理的 HOT_LRU
(如果我没记错?)这意味着在新版本足够新且启用了2Q算法的情况下,您将获得仅一个LRU中内容的快照视图。
如果您想查看所有内容,则 lru_crawler metadump 1
(或者 lru_crawler metadump all
)是新的大多数官方支持的方法,它将异步转储您想要的所有键。您会以无序方式获取它们,但它会到达所有LRU,并且除非您删除/替换项目,否则多次运行应产生相同的结果。
来源:GH-405。
相关链接: