工具版:
Memcached目前正在运行:
$ ps -ef | grep memcache
nobody 2993 1 0 16:46 ? 00:00:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1
我在我的Django项目中使用了memcached和python memcached,我在settings.py
中将其设置如下:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'TIMEOUT': 86400,
},
}
我在代码中设置了缓存:
from django.core.cache import cache
cache.set('countries', ['Canada', 'US'])
然后我打开一个Django shell来检查缓存的内容:
>>> from django.core.cache import cache
>>> 'countries' in cache
True
>>> import memcache
>>> mc = memcache.Client(['127.0.0.1:11211'], debug=1)
>>> mc.get('countries')
>>>
当我使用Django的缓存时,countries
密钥存在。但是,当我使用Python的memcache时,我没有为国家获得任何东西。我上面做错了什么?
答案 0 :(得分:8)
Django使用冒号前缀缓存键。如果这没有用,你可以检查memcached like so。
答案 1 :(得分:5)
您可以使用以下内容的memcached_stats: https://github.com/dlrust/python-memcached-stats
实施例: (我使用pylibmc作为缓存,但我认为这应该是相同的,你使用python-memcached)
import pylibmc
from memcached_stats import MemcachedStats
mem = MemcachedStats() # connecting to localhost at default memcached port
# print out all your keys
mem.keys()
# say for example key[0] is 'countries', then to get the value just do
key = mem.keys()[0]
value = mc.get (key)
memcaced_stats还有一个命令行界面: python -m memcached_stats
看看github repo,因为README非常清楚。
答案 2 :(得分:2)
以下脚本转储memcached服务器的所有内容。它已经使用Ubuntu 12.04和本地主机memcached进行了测试,因此您的milage可能会有所不同。
#!/usr/bin/env bash
echo 'stats items' \
| nc localhost 11211 \
| grep -oe ':[0-9]*:' \
| grep -oe '[0-9]*' \
| sort \
| uniq \
| xargs -L1 -I{} bash -c 'echo "stats cachedump {} 1000" | nc localhost 11211'
它做什么,它遍历所有缓存板并打印每个缓存板的1000个条目。