重击
要获取 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命令获取平板列表,例如:
memcmd stats items
对于每个 slub 类,您可以通过指定 slub 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
(IIRC?),在活动发生时由后台线程管理。这意味着在启用了 2Q 算法的足够新版本下,您将获得其中一个 LRU 中的快照视图。
如果您想查看所有内容,lru_crawler metadump 1
(or lru_crawler metadump all
) 是新的大多数官方支持的方法,它将异步转储任意数量的键。你会让它们乱序,但它会影响所有 LRU,除非你删除/替换项目,否则多次运行应该会产生相同的结果。
来源:GH-405。
有关的: