1

我正在尝试使用 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,django-redis是3.3,hiredis是0.0.1

4

1 回答 1

2

编辑:显然我读错了缓存提供程序,下面的答案是解决方案django-redis-cache,而不是django-redis. 不过,我会让答案保留下来,因为更改缓存提供程序并使用此配置似乎已经解决了问题。

您应该不需要unix:前缀,并且后端设置看起来很奇怪;

'default': {
    'BACKEND': 'redis_cache.RedisCache',
    'LOCATION': '/tmp/redis.sock',
    'OPTIONS': { ...
于 2013-07-09T15:32:17.517 回答