如何获取memcached中特定项的到期时间

mag*_*hen 9 python memcached

在运行时,我想检索有关memcached中某些项的过期时间信息.我没有在memcached上找到任何相关的接口.我可以这样做吗?类似于:mc.get_expire_time('key')

谢谢

小智 12

Python memcache API不提供这样的功能.但是,您可以telnet到memcached以转储所有密钥和到期时间.

> telnet localhost 11211
Run Code Online (Sandbox Code Playgroud)

stats items 显示包含数据的slab.

stats items
STAT items:12:number 1108
...
END
Run Code Online (Sandbox Code Playgroud)

然后stats cachedump slab_id count用来查看密钥和到期时间.将计数设置为0以检索所有键.

stats cachedump 12 1
ITEM abc [100 b; 1528336485 s]
END
Run Code Online (Sandbox Code Playgroud)


Xio*_*iov 7

令人讨厌的是,这些信息似乎只在slab stats中提供.从这开始:

[$]> (sleep 1; echo "stats cachedump 1 0"; sleep 1; echo "quit";) | telnet localhost 11211 | grep 'my_key'
Run Code Online (Sandbox Code Playgroud)

并增加slab('cachedump'之后的第一个数字),直到找到合适的slab.一旦你得到一个结果,它将是形式

ITEM my_key [2 b; 1389767076 s]
Run Code Online (Sandbox Code Playgroud)

那里的最后一个数字(1389767076在这种情况下)是密钥到期时的unixtime.您可以time.localtime()使用Wolfram Alpha将此数字转换为人类可读的内容,或使用Wolfram Alpha实时更新.


Den*_*ach 6

根据memcache协议(文本二进制)niether get也不gets返回到期时间.而且没有其他方法可以检索它.但肯定的,你可以打包到期时间为价值与现在存储什么,当你沿着set/ add它,使其检索.