Redis 和 RedisCluster 版本不兼容问题

2020-04-26

今天部署了Redis集群替换了之前的单节点部署,使用python脚本连接数据库时发现报错 cannot import name 'StrictRedisCluster' ,

自行上网查了一番,是版本不兼容的问题,网上的大多解决案例都是来降低版本安装指定的版本,参考:https://www.cnblogs.com/wy123/p/12129386.html 。

我呢决定就从安装的最新的版本开干。

  • 查看版本

通过 pip3 install redis-py-cluster 安装了redis 和 rediis-py-cluster两个包,版本如下

 

 

  • 查看官网

官网地址  https://pypi.org/project/redis-py-cluster/

进入官网,在官网上扫荡有效信息,如下图

 

我的python 版本是3.5, 满足;redis-py 版本已经被默认重新安装到了支持的版本,满足。

再看示例代码是导入的 RedisCluster 而不是 StrictRedisCluster,此时应该就明白了吧。

这时候直奔主题,找到该包的安装位置,打开__init__.py文件,如下:

# -*- coding: utf-8 -*-

# python std lib
import sys

# Import shortcut
from .client import RedisCluster
from .pipeline import ClusterPipeline
from .pubsub import ClusterPubSub

# Monkey patch RedisCluster class into redis for easy access
import redis
setattr(redis, "RedisCluster", RedisCluster)
setattr(redis, "ClusterPubSub", ClusterPubSub)
setattr(redis, "ClusterPipeline", ClusterPipeline)

# Major, Minor, Fix version
__version__ = (2, 0, 0)

def int_or_str(value):
    try:
        return int(value)
    except ValueError:
        return value


__version__ = '2.0.0'
VERSION = tuple(map(int_or_str, __version__.split('.')))

if sys.version_info[0:3] == (3, 4, 0):
    raise RuntimeError("CRITICAL: rediscluster do not work with python 3.4.0. Please use 3.4.1 or higher.")

这时候就可以开始你的表演了!

 

posted @ 2020-04-26 17:42  92monkey  阅读(872)  评论(0)    收藏  举报