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