Django 之 redis使用哨兵模式

redis 使用哨兵模式的方法在以前的博文中有介绍过,那么如果我们 Django 的系统用 cache 和 celery 连接的 redis 是哨兵模式,使用方法是怎么样的呢?
一起来看一下 demo 吧。

注意:celery 仅在 4.2 版本以后才支持 redis 使用哨兵模式。

以下是用到的 依赖的版本情况:

celery==4.2.0
Django==2.1
django-redis==4.10.0
django-sentinel==0.1.0
redis==3.2.0
基础信息

master name 为 ‘mymaster’

redis 哨兵的 ip 和 port 分别是:
192.168.1.1:26379
192.168.1.2:26379
192.168.1.3:26379

密码为:‘mypassword’

缓存

Django 使用缓存用到的依赖是 django-sentinel,推荐还有一个类似的包,但是我测试的过程中发现不可用,可能是姿势不对,但我用这个依赖测试成功,所以这里给出 demo。

# settings.py
# django-sentinel==0.1.0
LOCATION = "mymaster/192.168.1.1:26379,192.168.1.2:26379,192.168.1.3:26379/1"
REDIS_PASSWORD = "mypassword"
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": LOCATION,
        "OPTIONS": {
            "PASSWORD": REDIS_PASSWORD,
            "CLIENT_CLASS": "django_sentinel.SentinelClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
        }
    }
}

设置好之后可以通过 shell 进行 cache 的验证,先 set 再 get,或者 set 之后直接去 redis 里 get。

celery

首先将 celery 版本升级为 4.2 或者 4.2 以后。
这里说个插曲,项目之前用的是 djcelery,但是 djcelery 最高版本为 3.x,不支持使用哨兵模式,所以得升级 celery 使用。

然后在 settings.py 里设置参数:

# setting.py
# celery==4.2.0
# Django==2.1
BROKER_BACKEND = 'redis'
MASTER_NAME = "mymaster"
CELERY_BROKER_URL = "sentinel://:mypassword@192.168.1.1:26379/1;sentinel://:mypassword@192.168.1.2:26379/1;sentinel://:mypassword@192.168.1.3:26379/1"
CELERY_BROKER_TRANSPORT_OPTIONS = {"master_name": MASTER_NAME}
CELERY_RESULT_BACKEND = 'sentinel://:mypassword@192.168.1.1:26379/2;sentinel://:mypassword@192.168.1.2:26379/2;sentinel://:mypassword@192.168.1.3:26379/2'
CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS = {"master_name": MASTER_NAME}

然后启动 celery 发现 celery 正常运行则 OK。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值