Управление тайм-аутом memcached при использовании его в качестве бэкэнда кеша для настройки сеанса cached_db в Django - PullRequest
0 голосов
/ 01 февраля 2019

В проекте Django при использовании кэширования сеанса типа cached_db:

1) Как можно контролировать time-out серверной части кэша?Например, я хочу, чтобы каждый объект данных сеанса, сохраненный в memcached, имел ttl из 20 дней.Кроме того, я хочу, чтобы это ttl обновлялось при последующих операциях записи (если они происходят).

2) Будет ли масштабирование кэша памяти автоматически масштабироваться для использования всей доступной оперативной памяти в случае огромного притока сеансов записи?Можно ли диктовать распределение памяти?Кроме того, есть ли лучшие практики, если есть всплеск данных?Когда я вижу /etc/memcached.conf, кажется, что не так много рычагов, которые можно нажать.

3) Как только ttl успешно добавлен в кешированные объекты сеанса, как насчет тестирования того, что он действительно работает??

Было бы здорово получить иллюстративный ответ.


Справочная информация: Я традиционно полагался на кэширование сеансов на основе БД, и только сейчас использовал mulledпереход к cached_db.Таким образом, я несколько зелен в этой теме.

Мои текущие настройки кэша следующие (установлены в settings.py):

    CACHES = {
        'default': {
            'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
            'LOCATION':'unix:/var/run/memcached/memcached.sock',
        }
    }

1 Ответ

0 голосов
/ 02 февраля 2019
  1. Бэкэнд принимает настройку TIMEOUT.Вы также можете указать другое время ожидания, когда устанавливает конкретную запись в кэше .

  2. Memcached не масштабируется автоматически.Он принимает -m аргумент командной строки при запуске, чтобы определить максимальный объем памяти, который он должен использовать для своего кэша.По умолчанию это 64 МБ.Вы также можете изменить этот предел во время работы с помощью команды cache_memlimit <limit in MB>.Я не могу говорить о том, что такое лучшие практики - думаю, что это случай определения того, какую нагрузку вы получаете, и нужно ли вам больше памяти, чтобы избежать высвобождения кэша из-за нехватки места.

  3. Примерно так:

    from django.core.cache import cache
    
    cache.set('test_key', 'test_value', timeout=10)   # Short timeout of 10 seconds
    # 10 seconds later
    cache.get('test_key')   # Should return None because the entry has expired
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...