django-redis

Pickle версия
Почти для всех значений django-redis использует pickle для сериализации объектов.

Последняя доступная версия pickle используется по умолчанию. Если вы хотите установить конкретную версию, вы можете сделать это, используя PICKLE_VERSION опцию:

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "PICKLE_VERSION": -1  # Use the latest protocol version
        }
    }
}

Socket timeout

Время ожидания сокета может быть установлено с помощью SOCKET_TIMEOUT и SOCKET_CONNECT_TIMEOUT параметров:

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds
            "SOCKET_TIMEOUT": 5,  # in seconds
        }
    }
}

SOCKET_CONNECT_TIMEOUT время ожидания для установления соединения и SOCKET_TIMEOUT время ожидания для операций чтения и записи после установления соединения.

Поддержка компрессии
django_redis поставляется с поддержкой сжатия из коробки, но по умолчанию деактивирован. Вы можете активировать его, настроив конкретный бэкэнд:

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "COMPRESSOR": "django_redis.compressors.zlib.ZlibCompressor",
        }
    }
}

Давайте рассмотрим пример того, как заставить его работать с форматом сжатия lzma :

import lzma

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "COMPRESSOR": "django_redis.compressors.lzma.LzmaCompressor",
        }
    }
}

Поддержка сжатия Lz4 (требуется библиотека lz4):

import lz4

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "COMPRESSOR": "django_redis.compressors.lz4.Lz4Compressor",
        }
    }
}

Memcached исключения поведения
В некоторых ситуациях, когда Redis используется только для кэширования, вы не хотите исключений, когда Redis не работает. Это стандартное поведение в memcached бэкэнде, и его можно эмулировать в django-redis .

Для настройки поведения, похожего на memcached (игнорируйте исключения подключения), вы должны установить IGNORE_EXCEPTIONS настройки в вашей конфигурации кеша:

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "IGNORE_EXCEPTIONS": True,
        }
    }
}

Также вы можете применить одинаковые настройки ко всем настроенным кешам, вы можете установить глобальный флаг в ваших настройках:

DJANGO_REDIS_IGNORE_EXCEPTIONS = True

Журнал игнорируемых исключений
При игнорировании исключений с помощью IGNORE_EXCEPTIONS или DJANGO_REDIS_IGNORE_EXCEPTIONS, вы можете записывать исключения, используя глобальную переменную DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS в файле настроек.

DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS = True

Если вы хотите указать регистратор, в котором выводятся исключения, просто задайте для глобальной переменной DJANGO_REDIS_LOGGER имя строки и / или путь к нужному регистратору. Это будет по умолчанию , __name__если не указан регистратор и DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS является True

DJANGO_REDIS_LOGGER = 'some.specified.logger'

Бесконечный тайм-аут
Django-Redis поставляется с бесконечной поддержкой тайм-аутов из коробки. И он ведет себя так же, как указано в бэкэнд-контракте django:

  • timeout=0 истекает значение сразу.
  • timeout=None бесконечный тайм-аут
cache.set("key", "value", timeout=None)

Получить ttl (time-to-live) от ключа

С помощью redis вы можете получить доступ к ttl любого сохраненного ключа, для этого django-redis предоставляет ttl функцию.

Возвращает:

  • 0, если ключ не существует (или уже истек).
  • Нет для ключей, которые существуют, но не имеют срока действия.
  • Значение ttl для любого изменчивого ключа (любой ключ, срок действия которого истек).

Простой поиск ключей по шаблону

>>> from django.core.cache import cache
>>> cache.set("foo", "value", timeout=25)
>>> cache.ttl("foo")
25
>>> cache.ttl("not-existent")
0

Далее : Django-Redis : Расширенное использование (часть 2) 

17 января 2019 г. 22:48 Теги - # Redis # django Категория - Django Kiwi standing on oval509