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 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和数据处理
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 : 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、订阅
1
2
3
4
5
6
7
8
9
10
11
12
|
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 |
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。