我想使用python-memcache从memcached服务器导出所有键和值.该模块中没有这样的功能.怎么办呢?
也许需要涉及"套接字"模块的更复杂的东西.
lrd*_*lrd 22
这将获取memcached服务器上的所有密钥,您可以使用任何memcached客户端库来获取每个密钥的值.
import telnetlib
def get_all_memcached_keys(host='127.0.0.1', port=11211):
t = telnetlib.Telnet(host, port)
t.write('stats items STAT items:0:number 0 END\n')
items = t.read_until('END').split('\r\n')
keys = set()
for item in items:
parts = item.split(':')
if not len(parts) >= 3:
continue
slab = parts[1]
t.write('stats cachedump {} 200000 ITEM views.decorators.cache.cache_header..cc7d9 [6 b; 1256056128 s] END\n'.format(slab))
cachelines = t.read_until('END').split('\r\n')
for line in cachelines:
parts = line.split(' ')
if not len(parts) >= 3:
continue
keys.add(parts[1])
t.close()
return keys
Run Code Online (Sandbox Code Playgroud)
scy*_*ale 13
使用libmemcached套件中的memdump和memcat实用程序.他们无法保证您将获得所有数据,但它们易于使用.
注:在Ubuntu/Debian的你可以intstalling在得到这些libmemcached-tools包,他们被称为memcdump和memccat.
转储所有密钥:
memcdump --servers=localhost
Run Code Online (Sandbox Code Playgroud)
转储所有值:
memccat --servers=localhost `memcdump --servers=localhost`
Run Code Online (Sandbox Code Playgroud)
当然你仍然需要匹配键和值 - 我建议将键转储到文件,然后使用它作为输入memcat(这确保一致性).然后当然你需要拆分值 - 一个句号是我认为的分隔符 - 然后顺序配对键和值.某处可能有一个脚本......
没有办法做到这一点.Memcache协议没有定义迭代密钥的任何命令.您必须知道检索值的关键.