安装redis库
pip3 install redis
连接数据库
import redis # StrictRedis和Redis效果一样,后者是前者的子集 r = redis.StrictRedis(host='localhost',port=6379,db=0) r.set("key1","value111") print(r.get("key1").decode("utf-8"))
设置过期时间
r.set("key2","value211",px=5000) # 单位为毫秒 r.setex("haha1",10,"nihao123") # 单位为秒
使用连接池去链接(Redis集群)
pool = redis.ConnectionPool(host='localhost',port=6379,decode_responses=True) r = redis.Redis(connection_pool=pool) r.set("key2","value211",px=5000) print(r.get("key2"))
mset功能
r.mset({'haha1':'value1','haha2':'value2','haha3':'value3'}) print(r.mget("haha1","haha3")) # 获取的就是一个list
hash功能
r.hset("hash1","k1","value1") r.hset("hash1","k2","value2222") print(r.hkeys("hash1")) # ['k1','k2'],hash1相当于特殊的键 print(r.hget("hash1","k2")) # hash1中k2键的值 print(r.hmget("hash1", "k2","k1")) # 获取hash1中k2,k1的全部内容,list保存,可以遍历提取 # 批量hash操作,但快要被hset取代 r.hmset("hash2",{"n1":"nnn1","n2":"nnn2"}) print(r.hgetall("hash2")) print(r.hexists("hash1","k1"))
自增自减
# 整数 r.hincrby("hash2","n3",amount=-11) # 浮点数 r.hincrbyfloat("hash2","n3",amount=+11.12)
list
r.rpush("list1",1,2,3,4,5,6,7) # list长度 print(r.llen("list1")) # 取0-3号元素,返回list print(r.lrange("list1",0,3)) # 插入元素到底部 r.rpush("list1",10) # 在3的前面添加一个99 r.linsert("list1","before",3,99) # 将5号元素的值修改为-300 r.lset("list1",4,-300) # 删除列表左边出现的第一个8 r.lrem("list1",1,"8") # 删除列表右边出现的第一个8 r.lrem("list1",-1,"8") # 删除列表最左边的元素 r.lpop("list1") # 只保留0-2号元素 r.ltrim("list1",0,2) # 索引为1的值 print(r.lindex("list1",1))
set
# 添加set数据 r.sadd("set1",11,22,33,44,55) # set1里有多少数据 print(r.scard("set1")) # 打印set1的数据(无序) print(r.smembers("set1")) # 按照保存在数据库中的顺序,使用迭代器获取元素(迭代器减少内存损耗) for i in r.sscan_iter("set1"): print(i) # 取交集 r.sinter("set1","set3") # 取并集 r.sunion("set1","set3") # 取差集 r.sinter("set1","set3") # 随机删除一个元素 r.spop("set1") # 指定删除某个元素 r.srem("set1",33)
zset
# 添加zset r.zadd("zset1",mapping={'m1':2,'m2':9,'m3':7,'m4':1}) # 查看几个元素 print(r.zcard("zset1")) # 查看全部元素,按照从小到大权重从左到右排序 print(r.zrange("zset1",0,-1)) # zrange反向排序 print(r.zrevrange("zset1",0,-1)) # 权重自增自减 r.zincrby("zset1",value="m3",amount=2) r.zincrby('zset1',2,'m3') # 删除值 r.zrem("zset1","m2") # 查看值的权重 print(r.zscore("zset1","m3"))
常用命令
# 任意类型数据键删除(图形化鼠标右键删除) r.delete("zset1") # 判断数据是否存在 print(r.exists("zset1")) # 重命名数据 r.rename("set1","set10") # 获得键的数据类型 print(r.type("set2"))