Redis -发布订阅

一、其他常用操作

1、delete(*names)

1
# 根据删除redis中的任意数据类型

2、exists(name)

1
# 检测redis的name是否存在

3、keys(pattern='*')

1
2
3
4
5
6
7
# 根据模型获取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)

1
# 为某个redis的某个name设置超时时间

5、rename(src, dst)

1
# 对redis的name重命名为

6、move(name, db))

1
# 将redis的某个值移动到指定的db下

 注:redis的数据库一共有16个,分别是0-15,用redis命令操作的时候,用select  db_index来切换数据库,如select  2

7、randomkey()

1
# 随机获取一个redis的name(不删除)

8、type(name)

1
# 获取name对应值的类型

 9、scan(cursor=0, match=None, count=None)

1
正则匹配name

10、scan_iter(match=None, count=None)

1
# 同字符串操作,用于增量迭代获取key

更多redis的命令操作:猛击这里

二、管道

  redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
import redis
  
pool = redis.ConnectionPool(host='localhost', port=6379,db=2)  #可以设置db
  
= 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和数据处理

3.2、实现

1、RedisHelper

说明:对发布订阅进行封装

2、订阅者:

1
2
3
4
5
6
7
8
from monitor.redis_helper import RedisHelper
 
obj = RedisHelper()
redis_sub = obj.subscribe()
 
while True:
    msg = redis_sub.parse_response() #第2次准备接收动作
    print(msg)

3、发布者:

1
2
3
4
5
from monitor.redis_helper import RedisHelper
 
 
obj = RedisHelper()
obj.public("hello world")  #发布消息

3.3、redis命令订阅发布

1、发布

1
2
3
4
5
6
7
8
9
127.0.0.1:6379help 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、订阅

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379help 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
posted @ 2018-01-09 14:30  活的潇洒80  阅读(109)  评论(0编辑  收藏  举报