Конфигурация 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': { ...