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.")
这时候就可以开始你的表演了!
欢迎各路高手对本文指正。

浙公网安备 33010602011771号