
Python中操作Redis及集群
在Python中操作Redis及其集群,常用的库为redis
(用于单节点Redis)和redis-py-cluster
(用于Redis集群)。以下是详细操作指南:
一、Python操作单节点Redis
1. 安装库
pip install redis
2. 连接Redis
import redis
# 直接连接
r = redis.Redis(host='localhost', port=6379, db=0, password='your_password')
# 使用连接池(推荐)
pool = redis.ConnectionPool(host='localhost', port=6379, db=0, password='your_password')
r = redis.Redis(connection_pool=pool)
3. 基本操作示例
# 字符串操作
r.set('key1', 'value1')
value = r.get('key1')
print(value.decode()) # 输出: value1
# 哈希表操作
r.hset('user:1', 'name', 'Alice')
r.hset('user:1', 'age', 30)
user = r.hgetall('user:1')
print(user) # 输出: {b'name': b'Alice', b'age': b'30'}
# 列表操作
r.lpush('mylist', 'a', 'b', 'c')
items = r.lrange('mylist', 0, -1)
print(items) # 输出: [b'c', b'b', b'a']
# 设置过期时间
r.expire('key1', 60) # 60秒后过期
# 删除键
r.delete('key1')
4. 管道(Pipeline)
pipe = r.pipeline()
pipe.set('key2', 'value2')
pipe.get('key2')
result = pipe.execute()
print(result) # 输出: [True, b'value2']
二、Python操作Redis集群
1. 安装库
pip install redis-py-cluster
2. 连接Redis集群
from rediscluster import RedisCluster
startup_nodes = [
{"host": "127.0.0.1", "port": 7000},
{"host": "127.0.0.1", "port": 7001},
{"host": "127.0.0.1", "port": 7002}
]
# 连接集群
rc = RedisCluster(
startup_nodes=startup_nodes,
decode_responses=True, # 自动解码为字符串
password='your_password'
)
3. 基本操作示例
# 写入数据
rc.set('cluster_key', 'cluster_value')
# 读取数据
value = rc.get('cluster_key')
print(value) # 输出: cluster_value
# 哈希操作
rc.hset('user:100', 'name', 'Bob')
rc.hset('user:100', 'age', 25)
user_data = rc.hgetall('user:100')
print(user_data) # 输出: {'name': 'Bob', 'age': '25'}
# 处理多个键(需确保在同一槽)
# 使用{}强制指定哈希标签,确保key分配到同一槽
rc.mset({"{tag}key1": "value1", "{tag}key2": "value2"})
4. 错误处理
from rediscluster.exceptions import RedisClusterException
try:
rc.get('non_existent_key')
except RedisClusterException as e:
print(f"Error: {e}")
三、注意事项
集群模式限制:
跨槽的多键操作(如
mget
、mset
)需使用{}
定义哈希标签,确保键在同一槽。事务(Transaction)和Lua脚本在集群中需所有键在同一槽。
连接池:
单节点建议使用连接池提升性能。
集群模式下连接池由库自动管理。
兼容性:
某些命令在集群模式不可用(如
KEYS *
),需替换为SCAN
。
性能优化:
使用管道(Pipeline)减少网络往返次数。
避免大键(Big Key)和慢查询。
四、官方文档
redis-py:https://redis-py.readthedocs.io/
redis-py-cluster:https://redis-py-cluster.readthedocs.io/
通过以上方法,可以高效地在Python中操作Redis及Redis集群。