主从+哨兵
from redis.sentinel import Sentinel
if __name__ == '__main__':
# 哨兵监听的别名,这个就是你redis配置中的名字
server_name = "mymaster"
# 设置哨兵组的IP和PORT
sentinel_list = [
("192.168.2.6", 26379),
("192.168.2.6", 26380),
("192.168.2.6", 26381),
]
# 初始化哨兵对象,并传递哨兵组的IP和端口信息
sentinel = Sentinel(sentinel_list)
# print(sentinel.discover_slaves(server_name))
# print(sentinel.discover_master(server_name))
# 从哨兵监视中获取master主库
master_client = sentinel.master_for(server_name, decode_responses=True)
# 从哨兵监视中获取slave从库
slave_client = sentinel.slave_for(server_name, decode_responses=True)
# 主库中设置值
master_client.set("username", "wangwu")
# 从库中获取值
print(slave_client.get("username"))
集群
from redis.cluster import ClusterNode
if __name__ == '__main__':
from redis import RedisCluster
# nodes = [
# {"host": "192.168.2.6", "port": 6382},
# {"host": "192.168.2.6", "port": 6383},
# {"host": "192.168.2.6", "port": 6384},
# {"host": "192.168.2.6", "port": 6385},
# ]
"""
S: 1bf7272d2b929d7a7d5080bfabfcdc1e2dee5dde 192.168.2.6:6379
S: 2553f886f985b64357d70cb581cb90206fd356e0 192.168.2.6:6380
S: 82170a4b12bb428469ee23f36b6c3b9aea14e65a 192.168.2.6:6381
M: fd85e7db8bcb89dd572bda08d832817515d74dc3 192.168.2.6:6382
M: 533580d3b0f60fe474d60439fff61536ba57b90e 192.168.2.6:6383
M: cbf4151ce9ca40fa8eea60c6242d5020c31829ce 192.168.2.6:6384
M: 6c220055c3c79f45443e388056b2ede17879d48a 192.168.2.6:6385
"""
# 可以将全部节点的信息都给定一个列表中
# 现在新版要求传的是ClusterNode对象了
nodes = [
ClusterNode("192.168.2.6", port=6382),
ClusterNode("192.168.2.6", port=6383),
ClusterNode("192.168.2.6", port=6384),
ClusterNode("192.168.2.6", port=6385),
ClusterNode("192.168.2.6", port=6379),
ClusterNode("192.168.2.6", port=6380),
ClusterNode("192.168.2.6", port=6381),
]
# 可以给定全部集群中的机器IP信息
cluster = RedisCluster(startup_nodes=nodes, decode_responses=True)
# 也可以随便指定一个节点(不管主从都可以,它会自动定位)
cluster = RedisCluster(host="192.168.2.6",port=6379, decode_responses=True)
cluster.set("test001", "哈哈哈哈")
# print(cluster.get("test001").decode())
print(cluster.get("test001"))