应用到redis墙问题

应用到redis墙问题

验证代码

import redis
from redis.sentinel import Sentinel
from redis.sentinel import SentinelConnectionPool

# 哨兵连接
sentinel = Sentinel([('1.1.1.1', 8021), ('1.1.1.2', 8022), ('1.1.1.3', 8023)],
                    socket_timeout=0.1)

# 连接池
pool = SentinelConnectionPool("cluster_name", db=5, password="1234",
                              sentinel_manager=sentinel, check_connection=True)

# 获取一个StrictRedis池化实例,red线程安全,设置成全局即可
red = redis.StrictRedis(connection_pool=pool)

场景

-->哨兵,-/->实例

验证代码没问题,red.keys()夯死60秒超时:redis.exceptions.ConnectionError: Error 110 connectiong to 实例:端口. Connection timed out

-->哨兵,-/->实例

  • 如果应用已经连接上了red实例,即使应用到哨兵墙不通,但是应用还是没有异常,说明应用根据哨兵获取到实例信息,然后直连实例
  • 如果应用没有连接上redis实例,应用到哨兵墙不通,则会出现:redis.sentinel.MasterNotFoundError: No Master found for '集群名'(但是只要一个哨兵是通的那么就没有问题)

-/->哨兵,-/->实例

同理-/->哨兵,-->实例

本文作者:朝圣

本文链接:www.zh-noone.cn/2020/2/应用到redis墙问题

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!

python-hash()函数
0 条评论