Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python memcached检查Django缓存的内容?_Python_Django_Memcached - Fatal编程技术网

如何使用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
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和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'