我想知道是否有人可以帮助阐明为什么调用flush_all()似乎无法更新统计信息。如果我创建一个客户端,添加1个密钥,获取它,然后flush_all()我希望随后的get_stats()0返回curr_items,但不是。在get()设置为flush_all()之后,直到执行键的curr_items

这是我目睹的一个例子:

import memcache

# Create a client
mc = memcache.Client(['127.0.0.1:11211'], debug=0)

# Add a key
mc.add('foo', 'bar')
print mc.get('foo')

# Get stats
stats = mc.get_stats()

# There will be 1 current item
print "Initial get_stat(): {}".format(stats[0][1]['curr_items'])

# Flush all
mc.flush_all()

# Get stats again
stats2 = mc.get_stats()

# There shouldn't be any items, but there is 1
print "Second get_stat(): {}".format(stats2[0][1]['curr_items'])

# Get the one key we added before
mc.get('foo')

# Get stats a third time
stats3 = mc.get_stats()

# There shouldn't be any items and now there aren't
print "Third get_stat(): {}".format(stats3[0][1]['curr_items'])


执行结果:

bar
Initial get_stat(): 1
Second get_stat(): 1
Third get_stat(): 0

最佳答案

flush操作实际上不会从内存中删除任何内容,它只是将所有内容标记为已过期。除非您尝试访问过期的项目,否则实际上不会删除它们。

关于python - Python Memcache flush_all行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40728682/

10-13 02:08