使用Python连接Azure Redis服务,因为在代码中使用的是Django-redis组件,所以通过如下的配置连接到Azure Redis服务:
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://xxxxxxxxx.redis.cache.chinacloudapi.cn:6380/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
但是当部署到AKS中后,发现一直报错 [ERROR][testdjangeredis.py:109]Error while reading from xxxxxxxxx.redis.cache.chinacloudapi.cn:6380 : (104, 'Connection reset by peer')
查看Django-redis的官方文档,对 cache backend 中Location的介绍为:
URL 格式举例
支持三种 URL scheme :
指定数据库数字的方法:
在仔细对比配置,发现连接Azure Redis的时候使用SSL 6380端口,而Django-Redis的配置中 scheme 还继续使用的 redis://,而不是rediss://,所以导致 Connection reset。
为了解决以上问题,直接修改Location设置为:rediss://xxxxxxxxx.redis.cache.chinacloudapi.cn:6380/1 即可!
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "rediss://xxxxxxxxx.redis.cache.chinacloudapi.cn:6380/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
django-redis 中文文档:https://django-redis-chs.readthedocs.io/zh_CN/latest/index.html