10.Redis高级使用以及和python互动
和python进行互动
安装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"))
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16153871.html