Конфигурация Django-Redis для использования сокета, а не TCP

Я пытаюсь использовать django-redis, используя Unix-сокеты, а не TCP-соединение:

Это settings.py конфигурация:

CACHES = {
    'default': {
        'BACKEND': 'redis_cache.cache.RedisCache',
        'LOCATION': 'unix:/tmp/redis.sock:1',
        'OPTIONS': {
            'PASSWORD': '',
            'PICKLE_VERSION': -1,   # default
            'PARSER_CLASS': 'redis.connection.HiredisParser',
            'CLIENT_CLASS': 'redis_cache.client.DefaultClient',
        },
    },
}

и это выдержка из файла конфигурации Redis в /etc/redis/6379.conf:

# Specify the path for the unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
#
unixsocket /tmp/redis.sock
unixsocketperm 755

Тем не менее я получаю ConnectionInterrumped исключение, которое обозначает ошибку во время соединения. Любые идеи о том, что проблема этой конфигурации?

PS Моя версия Django 1.5.1Джанго-Редис 3.3 и Hiredis является 0.0.1,

1 ответ

Решение

РЕДАКТИРОВАТЬ: видимо, я неправильно прочитал поставщика кэша, ответ ниже является решением для django-redis-cacheне django-redis, Я оставлю ответ, так как смена провайдера кэша и использование этой конфигурации, похоже, решили проблему.

Вам не нужно unix: префикс, и настройка бэкэнда выглядит странно;

'default': {
    'BACKEND': 'redis_cache.RedisCache',
    'LOCATION': '/tmp/redis.sock',
    'OPTIONS': { ...
Другие вопросы по тегам