Redis 發布訂閱

2022-05-27 03:03:31 字數 3646 閱讀 6833

一、其他常用操作

1、delete(*names) 或者del

# 根據刪除redis中的任意資料型別
2、exists(name)

# 檢測redis的name是否存在
3、keys(pattern='*')

# 根據模型獲取redis的name

# 更多:

# keys * 匹配資料庫中所有 key 。

# keys h?llo 匹配 hello , hallo 和 hxllo 等。

# keys h*llo 匹配 hllo 和 heeeeello 等。

# keys h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo

4、expire(name ,time)

# 為某個redis的某個name設定超時時間
5、 rename(src, dst)

# 對redis的name重新命名為
6、move(name, db))

# 將redis的某個值移動到指定的db下
注:redis的資料庫一共有16個,分別是0-15,用redis命令操作的時候,用select  db_index來切換資料庫,如select  2

127.0.0.1:6379> move a 2

(integer) 1

127.0.0.1:6379> select 2

ok127.0.0.1:6379[2]> keys *

1) "a"

127.0.0.1:6379[2]>

7、randomkey()

# 隨機獲取乙個redis的name(不刪除)
8、type(name)

# 獲取name對應值的型別
9、scan(cursor=0, match=none, count=none)

正則匹配name
10、scan_iter(match=none, count=none)

# 同字串操作,用於增量迭代獲取key
更多redis的命令操作:猛擊這裡二、管道redis-py預設在執行每次請求都會建立(連線池申請連線)和斷開(歸還連線池)一次連線操作,如果想要在一次請求中指定多個命令,則可以使用pipline實現一次請求指定多個命令,並且預設情況下一次pipline 是原子性操作。

import redis

pool = redis.connectionpool(host='localhost', port=6379,db=2) #可以設定db

r = redis.redis(connection_pool=pool)

# pipe = r.pipeline(transaction=false)

pipe = r.pipeline(transaction=true)

pipe.set('name', 'alex') #這邊只是設定了,但是沒有執行

pipe.set('role', 'sb')

pipe.execute() #當執行execute,才會批量去執行上面的命令

三、發布訂閱3.1、原理圖發布者:伺服器     訂閱者:dashboad和資料處理

說明:對發布訂閱進行封裝

import redis

class redishelper(object):

def __init__(self):

self.__conn = redis.redis(host="localhost")

self.chan_sub = 'fm104.5'

self.chan_pub = 'fm104.5'

def public(self,msg):

"發布"

self.__conn.publish(self.chan_pub,msg) #發布訊息

return true

def subscribe(self):

"訂閱"

pub = self.__conn.pubsub() #開啟收音機

pub.subscribe(self.chan_sub) #調頻道

pub.parse_response() #準備接收

return pub

2、訂閱者:

from monitor.redis_helper import redishelper

obj = redishelper()

redis_sub = obj.subscribe()

while true:

msg = redis_sub.parse_response() #第2次準備接收動作

print(msg)

3、發布者:

from monitor.redis_helper import redishelper

obj = redishelper()

obj.public("hello world") #發布訊息

3.3、redis命令訂閱發布1、發布

127.0.0.1:6379> help publish

publish channel message

summary: post a message to a channel

since: 2.0.0

group: pubsub

127.0.0.1:6379> publish "fm104.5" helloword #publish 頻道 訊息

(integer) 1

2、訂閱

127.0.0.1:6379> help subscribe

subscribe channel [channel ...]

summary: listen for messages published to the given channels

since: 2.0.0

group: pubsub

127.0.0.1:6379> subscribe "fm104.5" #subscribe 頻道,可以訂閱多個頻道

reading messages... (press ctrl-c to quit)

1) "subscribe"

2) "fm104.5"

3) (integer) 1

Redis 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 pu...

Redis 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 publish 傳送訊息,訂閱者 subscribe 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖是 頻道 channel1 以及訂閱這個頻道的三個客戶端 client1 client2和 client3 當有新訊息通過 ...

Redis發布訂閱

概述 redis發布訂閱 pub sub 是種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 訂閱訊息。redis客戶端可以訂閱任意數量的頻道。下圖展示了頻道channel以及訂閱它的三個客戶端 client2 client5和client1之間的關係 當有新的訊息publish到chann...