python 连接管理作redis集群

一、连接redis集群
python的redis库是不支持集群操作的,推荐库:redis-py-cluster

安装

pip3 install redis-py-cluster

连接redis集群

\"\" \"\"

#!/usr/bin/env python
# coding: utf-8
from rediscluster import StrictRedisCluster
class RedisCluster(object):  # 连接redis集群
    def __init__(self,conn_list):
        self.conn_list = conn_list  # 连接列表
    def connect(self):
        \"\"\"
        连接redis集群
        :return: object
        \"\"\"
        try:
            # 非密码连接redis集群
            # redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
            # 使用密码连接redis集群
            redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password=\'123456\')
            return redisconn
        except Exception as e:
            print(e)
            print(\"错误,连接redis 集群失败\")
            return False
redis_basis_conn = [{\'host\': \'192.168.10.168\', \'port\': 7201}, {\'host\': \'192.168.10.169\', \'port\': 7201}, {\'host\': \'192.168.10.170\', \'port\': 7201}, {\'host\': \'192.168.10.171\', \'port\': 7201}, {\'host\': \'192.168.10.142\', \'port\': 7201}, {\'host\': \'192.168.10.143\', \'port\': 7201}]
res = RedisCluster(redis_basis_conn).connect()
if not res:
    print(\"连接redis集群失败\")
else:
    print(\"连接redis集群成功\")

执行输出:

连接redis集群成功

二、操作redis集群

查看节点状态

\"\" \"\"

#!/usr/bin/env python
# coding: utf-8
from rediscluster import StrictRedisCluster
class RedisCluster(object):  # 连接redis集群
    def __init__(self,conn_list):
        self.conn_list = conn_list  # 连接列表
    def connect(self):
        \"\"\"
        连接redis集群
        :return: object
        \"\"\"
        try:
            # 非密码连接redis集群
            # redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
            # 使用密码连接redis集群
            redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password=\'123456\')
            return redisconn
        except Exception as e:
            print(e)
            print(\"错误,连接redis 集群失败\")
            return False
    def get_state(self):
        \"\"\"
        获取状态
        :return:
        \"\"\"
        res = RedisCluster(self.conn_list).connect()
        # print(\"连接集群对象\",res,type(res),res.__dict__)
        if not res:
            return False
        dic = res.cluster_info()  # 查看info信息, 返回dict
        for i in dic:  # 遍历dict
            ip = i.split(\":\")[0]
            if dic[i].get(\'cluster_state\'):  # 获取状态
                print(\"节点状态, ip: \", ip, \"value: \", dic[i].get(\'cluster_state\'))
redis_basis_conn = [{\'host\': \'192.168.10.168\', \'port\': 7201}, {\'host\': \'192.168.10.169\', \'port\': 7201}, {\'host\': \'192.168.10.170\', \'port\': 7201}, {\'host\': \'192.168.10.171\', \'port\': 7201}, {\'host\': \'192.168.10.142\', \'port\': 7201}, {\'host\': \'192.168.10.143\', \'port\': 7201}]
RedisCluster(redis_basis_conn).get_state()

执行输出:

节点状态, ip:  192.168.10.171 value:  ok
节点状态, ip:  192.168.10.169 value:  ok
节点状态, ip:  192.168.10.143 value:  ok
节点状态, ip:  192.168.10.142 value:  ok
节点状态, ip:  192.168.10.170 value:  ok
节点状态, ip:  192.168.10.168 value:  ok

查看aof是否开启

\"\" \"\"

#!/usr/bin/env python
# coding: utf-8
from rediscluster import StrictRedisCluster
class RedisCluster(object):  # 连接redis集群
    def __init__(self,conn_list):
        self.conn_list = conn_list  # 连接列表
    def connect(self):
        \"\"\"
        连接redis集群
        :return: object
        \"\"\"
        try:
            # 非密码连接redis集群
            # redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
            # 使用密码连接redis集群
            redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password=\'123456\')
            return redisconn
        except Exception as e:
            print(e)
            print(\"错误,连接redis 集群失败\")
            return False
    def get_info(self):
        \"\"\"
        获取redis集群info信息
        :return: dict
        \"\"\"
        res = RedisCluster(self.conn_list).connect()
        # print(\"连接集群对象\",res,type(res),res.__dict__)
        if not res:
            return False
        dic = res.cluster_info()  # 查看info信息, 返回dict
        if not dic:
            return False
        return dic
    def get_state(self):
        \"\"\"
        获取状态
        :return:
        \"\"\"
        dic = self.get_info()  # type:dict
        if not dic:
            return dic
        for i in dic:  # 遍历dict
            ip = i.split(\":\")[0]
            if dic[i].get(\'cluster_state\'):  # 获取状态
                print(\"节点状态, ip: \", ip, \"value: \", dic[i].get(\'cluster_state\'))
    def get_has_aof(self):
        \"\"\"
        查看aof是否打开
        :return:
        \"\"\"
        res = RedisCluster(self.conn_list).connect()
        # print(\"连接集群对象\",res,type(res),res.__dict__)
        if not res:
            return False
        dic = res.config_get(\'appendonly\')  # 从config配置项中查询appendonly
        for i in dic:
            ip = i.split(\":\")[0]
            # print(dic[i])
            if dic[i].get(\'appendonly\'):
                print(\"aof开关, ip: \", ip,\"value: \",dic[i].get(\'appendonly\'))
redis_basis_conn = [{\'host\': \'192.168.10.168\', \'port\': 7201}, {\'host\': \'192.168.10.169\', \'port\': 7201}, {\'host\': \'192.168.10.170\', \'port\': 7201}, {\'host\': \'192.168.10.171\', \'port\': 7201}, {\'host\': \'192.168.10.142\', \'port\': 7201}, {\'host\': \'192.168.10.143\', \'port\': 7201}]
RedisCluster(redis_basis_conn).get_has_aof()

执行输出:

aof开关, ip:  192.168.10.170 value:  no
aof开关, ip:  192.168.10.168 value:  no
aof开关, ip:  192.168.10.142 value:  no
aof开关, ip:  192.168.10.171 value:  no
aof开关, ip:  192.168.10.169 value:  no
aof开关, ip:  192.168.10.143 value:  no

set和get

\"\" \"\"

#!/usr/bin/env python
# coding: utf-8
from rediscluster import StrictRedisCluster
class RedisCluster(object):  # 连接redis集群
    def __init__(self,conn_list):
        self.conn_list = conn_list  # 连接列表
    def connect(self):
        \"\"\"
        连接redis集群
        :return: object
        \"\"\"
        try:
            # 非密码连接redis集群
            # redisconn = StrictRedisCluster(startup_nodes=self.conn_list)
            # 使用密码连接redis集群
            redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password=\'123456\')
            return redisconn
        except Exception as e:
            print(e)
            print(\"错误,连接redis 集群失败\")
            return False
# 连接列表,注意:必须严格按照此格式来!
redis_basis_conn = [{\'host\': \'192.168.10.168\', \'port\': 7201}, {\'host\': \'192.168.10.169\', \'port\': 7201}, {\'host\': \'192.168.10.170\', \'port\': 7201}, {\'host\': \'192.168.10.171\', \'port\': 7201}, {\'host\': \'192.168.10.142\', \'port\': 7201}, {\'host\': \'192.168.10.143\', \'port\': 7201}]
redis_conn = RedisCluster(redis_basis_conn).connect()  # redis连接对象
redis_conn.set(\'name\',\'weijing\')  # 插入一个值
print(\"name is: \", redis_conn.get(\'name\'))  # 查询值

执行输出:

name is:  b\'weijing\'

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

购物车