您好,登錄后才能下訂單哦!
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的第0到3個字符
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"})#批量設置info的hash
print(r.hmget("info","name","address","number"))#批量獲取info的hash
print(r.hgetall("info"))#獲取info的所有值
print(r.hlen("info"))#查看info的長度
print(r.hkeys('info'))#查看info的key
print(r.hvals('info'))#查看info的value
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找出2個value
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)#保留2到4位的值,其余的刪除
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)) #查看權重60到90有幾個成員
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) #刪除排名第0到1位的成員
r.zremrangebyscore("shuxue",0,11) #刪除第0到11位權重的成員
print(r.zscore("shuxue","lilei")) #獲取lilei的分數
r.zinterstore("score_1","2","yuwen","shuxue")#指定2個有序集合,yuwen和shuxue集合,相加保存到 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()#管道執行,只有到了這一步才會設置name和age,而不會在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)#調用redis的publish方法
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('你好')#調用redis的publish功能 命令:publish 頻道 消息
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。