python RedisUtil 单机 主从 集群代码
时间: 2024-02-05 11:03:04 浏览: 123
以下是使用 Python 操作 Redis 单机、主从、集群的 RedisUtil 工具类的代码示例:
```python
import redis
# 单机模式
class RedisUtil:
def __init__(self, host, port, db):
self.host = host
self.port = port
self.db = db
self.redis_conn = self.create_conn()
def create_conn(self):
redis_conn = redis.Redis(host=self.host, port=self.port, db=self.db)
return redis_conn
# 主从模式
class RedisMasterSlaveUtil:
def __init__(self, master_host, master_port, slave_host, slave_port, db):
self.master_host = master_host
self.master_port = master_port
self.slave_host = slave_host
self.slave_port = slave_port
self.db = db
self.redis_conn = self.create_conn()
def create_conn(self):
redis_conn = redis.Redis(host=self.master_host, port=self.master_port, db=self.db)
redis_conn_slave = redis.Redis(host=self.slave_host, port=self.slave_port, db=self.db)
redis_conn_slave.slaveof(self.master_host, self.master_port)
return redis_conn
# 集群模式
class RedisClusterUtil:
def __init__(self, nodes):
self.nodes = nodes
self.redis_conn = self.create_conn()
def create_conn(self):
redis_conn = redis.StrictRedisCluster(startup_nodes=self.nodes, decode_responses=True)
return redis_conn
if __name__ == '__main__':
# 单机模式
redis_util = RedisUtil('localhost', 6379, 0)
redis_util.set('name', 'RedisUtil')
print(redis_util.get('name'))
# 主从模式
redis_master_slave_util = RedisMasterSlaveUtil('localhost', 6379, 'localhost', 6380, 0)
redis_master_slave_util.set('name', 'RedisMasterSlaveUtil')
print(redis_master_slave_util.get('name'))
# 集群模式
nodes = [{'host': 'localhost', 'port': '7000'},
{'host': 'localhost', 'port': '7001'},
{'host': 'localhost', 'port': '7002'},
{'host': 'localhost', 'port': '7003'},
{'host': 'localhost', 'port': '7004'},
{'host': 'localhost', 'port': '7005'}]
redis_cluster_util = RedisClusterUtil(nodes)
redis_cluster_util.set('name', 'RedisClusterUtil')
print(redis_cluster_util.get('name'))
```
该工具类通过不同的 Redis 连接方式,分别实现了单机、主从、集群模式下的 Redis 操作。在使用主从模式时,通过在从节点上执行 slaveof 命令,将从节点设置为主节点的从节点。在使用集群模式时,需要传入节点列表,通过 StrictRedisCluster 创建连接。其他操作与前面的 RedisUtil 工具类相同。
阅读全文