温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

redis操作

发布时间:2020-07-20 11:27:14 来源:网络 阅读:194 作者:leiwenbin627 栏目:编程语言

pycharm安装redis
D:\project\s14  pip install redis

setting-->project interpreter---> +
#/usr/bin/env python
#!-*-coding:utf-8-*-
import redis,time
#单连
r = redis.Redis(host='192.168.74.20', port=6379,db=6)

#连接池
pool = redis.ConnectionPool(host='192.168.74.20', port=6379,db=6)
r = redis.Redis(
connection_pool=pool)

string
字符操作
r.set(
"name","alex")
print(r.get('name'))
r.setnx(
"name1","jack")#name1 不存在时有效 not exist
print(r.get(('name1')))
r.psetex(
"name",1000,"Lucy") #name已经存在,有效期1000ms
print(r.get("name"))
r.mset({
"name2":'lili','age':'88'})#批量设置 以字典的形式
print(r.mget("name2",'age',"name"))#批量获取
print(r.getset('name','kobe_brant'))#设置新值并返回原来的值
print(r.get('name'))
print(r.getrange('name',0,3)) #获取name的第03个字符
r.setrange('name2',0,"Alex")#从第0位开始,逐步替换成kathy
print(r.get("name2"))
print(ord("a"))
r.setbit(
"name2",6,1)
print(r.get("name2"))
print(r.bitcount("name2")) #names2的值转换成二进制有多少个1
print(r.strlen("name"))# name的值的长度
r.set('k1','20')
r.incr(
'k1',amount=10) #10位自增
print(r.get('k1'))
r.set(
"k2","1.5")
r.incrbyfloat(
"k2",amount=2.5) #浮点数 2.5自增
print(r.get("k2"))
print(r.decr("k1",amount=5))# 5自减
r.append("k1","00")#k1的值追加00
print(r.get("k1"))

hash
哈希操作
r.hset(
"info","name","mary")#info的哈希数据 hash key value
print(r.hget("info","name")) #info的哈希 name的值
r.hmset("info",{"address":"shenzhen","number":"12556"})#批量设置infohash
print(r.hmget("info","name","address","number"))#批量获取infohash
print(r.hgetall("info"))#获取info的所有值
print(r.hlen("info"))#查看info的长度
print(r.hkeys('info'))#查看infokey
print(r.hvals('info'))#查看infovalue
print(r.hexists('info','name'))#判断info是否存在key
r.hdel('info','address')#删除key
print(r.hgetall('info'))
r.hincrby(
'info','number',amount=1000) #key对应的value自增1000
print(r.hget('info','number'))
r.hset(
'info2','num','1.6')
r.hincrbyfloat(
'info2','num',amount=5.5)#浮点数自增5.5
print(r.hgetall('info2'))
print(r.hscan('info',cursor=0,match='n*',count=2))#光标第0个开始,匹配n开头的key找出2value

list列表操作
r.lpush(
'addr','shenzhen','nanchang','ganzhou','guangzhou') 设定addr列表并传入数据
print(r.lrange('addr',0,-1)) #获取列表addr 所有数据
r.lpushx('address','xingguo')#列表addr存在时,xingguo添加到最左边,如果不存在也不会报错
print(r.lrange('addr',0,-1))
r.rpush(
'numbers','1','2','3','4','5')
r.rpushx(
'numberss','new_1')#列表numbers存在时,new_1添加到最右边
print(r.lrange('numbers',0,-1))
print(r.llen('numbers'))#列表的长度
r.linsert('addr','after','xingguo','gulong')#xinnguo后面插入gulong
r.lset('numbers',10,'6')#10个值重新赋值为6
print(r.lrange('numbers',0,-1))
r.lrem(
'numbers','1',4)#从第1位开始,删除后面的4
print(r.lrange('numbers',0,-1))
print(r.lpop('numbers'))#列表的左侧删除一个值,删除的值返回屏幕
print(r.lrange('numbers',0,-1))
print(r.rpop('numbers'))#列表的右侧删除一个值并返回屏幕
print(r.lrange('numbers',0,-1))
print(r.lindex('numbers','2'))#获取numbers的第2个值
r.ltrim('numbers',2,4)#保留24位的值,其余的删除
print(r.lrange('numbers',0,-1))
r.rpoplpush(
'numbers','nums')#numbers的最右侧的值移到nums的最左侧
print(r.lrange('nums',0,-1))
r.blpop(
'nums',timeout=10)#从左边往右依次删除
print(r.lrange('nums',0,-1))
r.brpop(
'nums',timeout=10)#从右往左依次删 超时时间为10s
print(r.lrange('nums',0,-1))
r.brpoplpush(
'numbers','nums',timeout=10)#numbers的最右侧移到nums最左侧,numbers移完了就卡主10s,有数据进numbers就释放在移数据
print(r.lrange('numbers',0,-1))
print(r.lrange('nums',0,-1))

set
集合操作
r.sadd(
"jihe","1","2","2","3")
print(r.scard("jihe"))#查找jihe有多少成员
r.sadd("jihe2",'1','2','6')
print(r.smembers("jihe")) #查找jihe的成员
print(r.sdiff("jihe","jihe2")) #jihe不在jihe2
r.sdiffstore('new_1','jihe','jihe2')#jihe不在jihe2,并且把结果保存到new_1集合里
print(r.smembers("new_1"))
print(r.sinter('jihe','jihe2')) #jihe jihe2的交集
r.sinterstore('new_2','jihe','jihe2')#jihe jihe2交集保存到new_2
print(r.smembers('new_2'))
print(r.sismember('jihe','1')) #判断1是不是jihe的成员
r.smove('jihe2','jihe','6')#jihe2的成员 6 移到jihe
print(r.smembers('jihe'))
print(r.spop(r.spop("jihe"))) #从集合 jihe随机移除一个成员
print(r.smembers('jihe'))
print(r.srandmember('jihe','2')) #jihe随机获取2个成员
r.srem('jihe','1') #删除jihe的成员1
print(r.smembers('jihe'))
print(r.sunion('jihe','jihe2'))#jihe jihe2的并集
r.sunionstore('new_3','jihe','jihe2')#jihe jihe2的并集保存到new_3
print(r.smembers('new_3'))
print(r.sscan('new_3',0,match=2,count=1))#new_3集合里,从光标0开始,匹配值是2的,只找1

z有序集合操作
r.zadd(
'shuxue','98','lei','56','alex','85','jack') #shuxue有序集合 98权重 成员lei
print(r.zcard("shuxue"))#查看有多少个成员
print(r.zcount("shuxue",60,90)) #查看权重6090有几个成员
r.zincrby("shuxue",1,"lilei") #shuxue集合 lilei成员的权重自增1
print(r.zrange("shuxue",0,-1,withscores=True))#遍历 shuxue 成员 列出权重
print(r.zrank("shuxue","lilei")) #查看lilei的排名 权重小到大排 默认0开始
r.zadd("shuxue",10,"kk") #添加kk 权重10
r.zrem("shuxue","kk") #删除kk
r.zremrangebyrank("shuxue",0,1) #删除排名第01位的成员
r.zremrangebyscore("shuxue",0,11) #删除第011位权重的成员
print(r.zscore("shuxue","lilei")) #获取lilei的分数
r.zinterstore("score_1","2","yuwen","shuxue")#指定2个有序集合,yuwenshuxue集合,相加保存到 socre_a集合
r.zunionstore("score_b",2,"yuwen","shuxue")#并集相加
print(r.zscan("score_1",0,match="j*")) #找出score_1集合中j开头的成员

其他操作
r.delete(
"0") #删除任意数据类型
print(r.exists("info"))#1为存在
print(r.keys(pattern="in*")) #获取in开头的name
r.expire("k2",2) #k2数据2秒之后过期删除
print(r.keys())
r.rename(
"info2","info_2")#将数据info2改名为info_2
r.move("city",1)#将数据city移到db 1
print(r.randomkey())#随机获取一个数据的 name
print(r.type("names")) #判断names的数据类型
print(r.scan(1,match="n*",count=2))#光标从1开始 匹配n后面有字符的数据名字,找出2个这样的数据名字

pipline实现一次请求指定多个命令实例
pool=redis.ConnectionPool(
host='192.168.74.20',port=6379,db=5)
r=redis.Redis(
connection_pool=pool)

pipe=r.pipeline(
transaction=True)
pipe.set(
'name','lwb')
time.sleep(
10)
pipe.set(
'age','19')
pipe.execute()
#管道执行,只有到了这一步才会设置nameage,而不会在sleep之前先设置name

redis订阅发布实例
redishelper.py
import redis
class Redishelper():
   
def __init__(self):
       
self.__conn=redis.Redis(host='192.168.74.20',db=0)
       
self.chan_sub='fm105.8'
       
self.chan_pub='fm105.8'
   
def public(self,msg):
       
self.__conn.publish(self.chan_pub,msg)#调用redispublish方法
       
return True
    def
subscribe(self):
        pub=
self.__conn.pubsub()# redis的订阅方法pubsub 开始订阅
       
pub.subscribe(self.chan_pub)#订阅频道
       
pub.parse_response()#准备接收 再后来调用这句话才是接收
       
return pub

订阅subscriber
#!/usr/bin/env python
#-*- coding:utf-8-*-
from redishelper import Redishelper
obj=Redishelper()
#实例化一个redis连接
redis_sub=obj.subscribe()#调用redis订阅方法,也就是打印方法
while True:
    msg=redis_sub.parse_response()
#收到就打印,收不到就卡主
   
print(msg[0].decode(),msg[1].decode(),msg[2].decode())

发布publisher
#!/usr/bin/env python
#!-*-coding:utf-8-*-
from redishelper import Redishelper
obj=Redishelper()
#实例化一个redis连接
obj.public('你好')#调用redispublish功能 命令:publish 频道 消息

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI