Как проверить содержимое кэша Django с помощью Python memcached? - PullRequest
11 голосов
/ 15 декабря 2011

Версия инструментов:

  • 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

Я использую 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, ключ countries существует.Однако, когда я использую memcache Python, я ничего не получаю для стран.Что я не так делаю выше?

Ответы [ 3 ]

8 голосов
/ 15 декабря 2011

Django префикс кеш-ключей с двоеточием. Вы можете проверить memcached примерно так , если это не поможет.

5 голосов
/ 03 января 2012

Вы можете использовать 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 очень ясен.

2 голосов
/ 10 августа 2016

Следующий скрипт сбрасывает все содержимое сервера 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 записей каждого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...