Как проверить содержимое кэша Django с помощью Python memcached?
инструменты версия:
- Python 2.6.5
- Джанго 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
Я использую memcached и python memcached с моим Django proj, и я установил его следующим образом в 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 для проверки содержимое кэша:
>>> 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,
3 ответов
Django префиксы ключей кэша с двоеточием. Вы можете проверить memcached вот так если это не поможет.
вы можете использовать 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, так как README очень ясен.
следующий скрипт сбрасывает все содержимое сервера memcached. Он протестирован с Ubuntu 12.04 и localhost 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 записей каждого.