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"))
posted @ 2022-04-16 18:55  icui4cu  阅读(66)  评论(0编辑  收藏  举报