import redis
pool=redis.ConnectionPool(host="127.0.0.1",port=int(6377),db=0,decode_responses=True)
r=redis.StrictRedis(connection_pool=pool)
print(r.ping()) #结果:True
#1、字符串类型
r.set("str1","name")
print(r.get("str1"))
#结果:name 字符串类型
r.set("str2",111)
print(r.get("str2"))
#结果:111 字符串类型
#2、列表类型:向列表list1中头部插入列表元素
r.lpush("list1","a","b")
r.lpush("list1","c")
print(r.lrange("list1",0,-1))
# 结果:['c', 'b', 'a']
#3、hash类型
r.hset("dict1",mapping={"name":"xiaohu","age":"18"})
print(r.hget("dict1","name"))
#结果:xiaohu
print(r.hget("dict1","age"))
#结果:18
#或者
r.hset("dict1",key="name",value="xiaohu")
print(r.hget("dict1","name"))
#结果:xiaohu
#4、集合类型
# r.sadd("set1","a","b","c")
print(r.smembers("set1")) #结果:{'c', 'a', 'b'}
集群模式下操作redis
redis集群模式批量删除key:
在redis集群中,插槽是分布式的,del删除使用多个键的命令:del key1 key2 失败并显示 CROSSSLOT Keys in request don't hash to the same slot错误。
解决办法:
for node in redis_node:
redis-cli -h {node} -p 7001 -a 123456 keys keyname* | xargs -r -t -n1 ./redis-cli -h {node} -p 7001 -a 123456 del
因为是集群模式,keys 找出的所有key不一定在一个solt分片上,所以使用xargs方式传递在每个分片上查询出的所有key,并执行批量删除同一分片上key
【注】:批量删除redis的key,避免命令执行失败,一次最多可批量删除5000个key
网友评论