如何使用Python memcached检查Django缓存的内容?
工具版本:如何使用Python memcached检查Django缓存的内容?,python,django,memcached,Python,Django,Memcached,工具版本: Python 2.6.5 Django 1.3.1 memcached 1.4.10 python memcached 1.48 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 proj中使用memcached和pyt
- Python 2.6.5
- Django 1.3.1
- memcached 1.4.10
- python memcached 1.48
$ 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 proj中使用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时,我并没有为国家得到任何东西。上面我做错了什么?Django用冒号作为缓存键的前缀。如果没有帮助,您可以检查memcached。您可以从以下位置使用memcached\u stats:
例如:
(我使用pylibmc进行缓存,但我认为这应该与使用python memcached时相同)
memcaced_stats还有一个命令行界面:
python-m memcached_stats
看看github repo,因为自述文件非常清楚。下面的脚本转储memcached服务器的所有密钥。它是用Ubuntu12.04和LocalHostMemcached测试的,所以你的想法可能会有所不同
#!/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个键。作为参考,django在默认情况下不再在缓存键前加冒号。但是,您仍然可以使用此处描述的密钥前缀配置选项来实现这一点。你为什么要缩短URL?我这么做是因为我想我的评论空间会用完。(我以后不会这么做)在你做mc.get()的代码中有一个bug。。什么是mc。。。?我想它是从pylibmc来的+第一关。memcached stats lib非常棒。请参阅文档…典型的客户端实例化…mc=pylibmc.client([“127.0.0.1”],binary=True,behaviors={“tcp_nodelay”:True,“ketama”:True})它不会转储memcached服务器的所有内容。它只显示现有的键。它是用Ubuntu 16.04测试的。
#!/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'