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))