最近公司的项目用了memcached,memcached比较老了,没有好用的工具直接查询memcached中的数据存储情况,如果用telnet连接查看,效率低,输错一个字母,直接查不出来,还不能删除,所以写了个代码查询,供大家参考一下吧,也可以copy了直接用
import datetime
import memcache
import re
def getkeynum(list1):
pattern = re.compile(r'(?<=items:)\d+\.?\d*')
keylist=[]
i = 0
for lis in list1:
keynum = pattern.findall(lis)
if keynum[0] not in keylist:
keylist.append(keynum[0])
i = i +1
print("************总过有[ {0} ]个key值".format(i))
return keylist
# 将一个元组中的字典部分拿出来,并展示
def formatdata(data):
data1=()
j=1
data1 = data[1]
for str in data1.items():
print(j, "序号", str)
j = j +1
print("总共有**{0}**条数据".format(j-1))
mc = memcache.Client(['127.0.0.1:1111'], debug=1)
keys = {}
value = mc.get_stats('items')
#print("测试")
#print(value[0])
item = value[0]
item2=item[1]
#print(item2)
count = 0
#调用接口返回关键字,遍历查询关键字
keylist = getkeynum(item2)
print("##########key值列表为", keylist)
#根据key拼接参数,并且使用该参数查询结果
for key in keylist:
resultlist = []
keyarg = 'cachedump '+key+' 0'
print("key值为******* {0} ******的具体数据".format(key))
resultlist = mc.get_stats(keyarg)
#formatdata(resultlist[0])
data1 = ()
data = ()
j = 1
data=resultlist[0]
data1 = data[1]
for str in data1.items():
print(j, "序号", str)
if str[0].count('.jpg') != 0:
j = j + 1
continue
print(" 最底层数据:", mc.get(str[0]))
j = j + 1
print("##########总共有**{0}**条数据".format(j - 1))
count = count + j-1
print("end *********总共记录条数******** {0}".format(count))
#释放memecached连接
mc.disconnect_all()
print(datetime.datetime.now())

本文介绍如何使用Python语言方便地查询memcached缓存中的数据,针对memcached查询工具不便的问题,提供了一种代码解决方案。
1062

被折叠的 条评论
为什么被折叠?



