Redis入门系列之队列和发布订阅模式
2015-06-04 00:00
701 查看
一.Redis实现队列
之前说了,使用lpush 配合rpop 或者rpush配合lpop就能实现队列了.Redis提供了一个方法可以阻塞等待,如果队列里面是空的就阻塞等待.
生产者:
消费者:
brpop key time
time为阻塞等待的时间,0表示无限等待
队列 queue里面是空的,则会阻塞等待.由于设置的时间为无限等.
Redis在取队列的时候支持优先级.
生产者:
消费者:
brpop后面放多个队列的时候 前面的队列优先级高.会先取出前面的队列之后在取后面的队列.
二.发布/订阅
所有订阅者都可以收到发布者的内容.也是利用redis的列表实现的.但是发布者发布的内容不会被存储下来,所以如果channel中没有订阅者,则消息直接丢失.
发布者:
由于这个时候channel还没有订阅者,所以返回的结果是0.
订阅者:
这样每次发布者发布消息之后,所有对这个channel订阅的订阅者都能收到消息.
之前说了,使用lpush 配合rpop 或者rpush配合lpop就能实现队列了.Redis提供了一个方法可以阻塞等待,如果队列里面是空的就阻塞等待.
生产者:
localhost:6379> lpush queue 5 4 3 2 1 (integer) 5
消费者:
localhost:6379> BRPOP queue 0 1) "queue" 2) "5" (67.95s) localhost:6379> BRPOP queue 0 1) "queue" 2) "4" localhost:6379> BRPOP queue 0 1) "queue" 2) "3" localhost:6379> BRPOP queue 0 1) "queue" 2) "2" localhost:6379> BRPOP queue 0 1) "queue" 2) "1" localhost:6379> BRPOP queue 0
brpop key time
time为阻塞等待的时间,0表示无限等待
队列 queue里面是空的,则会阻塞等待.由于设置的时间为无限等.
Redis在取队列的时候支持优先级.
生产者:
localhost:6379> lpush queue:1 5 4 (integer) 2 localhost:6379> lpush queue:2 2 1 0 (integer) 3
消费者:
localhost:6379> brpop queue:1 queue:2 10 1) "queue:1" 2) "5" localhost:6379> brpop queue:1 queue:2 10 1) "queue:1" 2) "4" localhost:6379> brpop queue:1 queue:2 10 1) "queue:2" 2) "2" localhost:6379> brpop queue:1 queue:2 10 1) "queue:2" 2) "1" localhost:6379> brpop queue:1 queue:2 10 1) "queue:2" 2) "0" localhost:6379> brpop queue:1 queue:2 10 (nil) (10.32s)
brpop后面放多个队列的时候 前面的队列优先级高.会先取出前面的队列之后在取后面的队列.
二.发布/订阅
所有订阅者都可以收到发布者的内容.也是利用redis的列表实现的.但是发布者发布的内容不会被存储下来,所以如果channel中没有订阅者,则消息直接丢失.
发布者:
localhost:6379> publish channel hi (integer) 0
由于这个时候channel还没有订阅者,所以返回的结果是0.
订阅者:
localhost:6379> subscribe channel Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel" 3) (integer) 1
这样每次发布者发布消息之后,所有对这个channel订阅的订阅者都能收到消息.
相关文章推荐
- redis安装问题小结
- Redis偶发连接失败案例实战记录
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- redis中修改配置文件中的端口号 密码方法
- Redis和Memcache的区别总结
- 算法系列15天速成 第九天 队列
- Redis服务器的启动过程分析
- C语言单链队列的表示与实现实例详解
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 为啥懒 Redis 是更好的 Redis
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C语言循环队列的表示与实现实例详解
- C++循环队列实现模型
- C#内置队列类Queue用法实例
- Array栈方法和队列方法的特点说明
- 详解Redis使用认证密码登录