我正试图使用Unix套接字而不是TCP连接来使用django-redis:
这是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',
},
},
}
这是在/etc/redis/6379.conf
:的redis配置文件的摘录
# 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
异常,它代表连接过程中的错误。关于这个配置的问题有什么想法吗?
附言:我的Django版本是1.5.1
,Django-redis是3.3
,hiredis是0.0.1
。
EDIT:显然我读错了缓存提供程序,下面的答案是django-redis-cache
的解决方案,而不是django-redis
。不过,我将保留答案,因为更改缓存提供程序并使用此配置似乎已经解决了问题。
您不应该需要unix:
前缀,并且后端设置看起来很奇怪;
'default': {
'BACKEND': 'redis_cache.RedisCache',
'LOCATION': '/tmp/redis.sock',
'OPTIONS': { ...