Redis消息队列及其他命令
消息队列:
消息队列主要分为两种,分别是生产者消费者模式和发布者订阅者模式,这两种模式 Redis 都支持
生产者消费者模式:
在生产者消费者(Producer/Consumer)模式下,上层应用接收到的外部请求后开始处理其当前步骤的
操作,在执行完成后将已经完成的操作发送至指定的频道(channel)当中,并由其下层的应用监听该频
道并继续下一步的操作,如果其处理完成后没有下一步的操作就直接返回数据给外部请求,如果还有
下一步的操作就再将任务发布到另外一个频道,由另外一个消费者继续监听和处理。
模式介绍:
生产者消费者模式下,多个消费者同时监听一个队里,但是一个消息只能被最先抢到消息的消费者
消费,即消息任务是一次性读取和处理,此模式在分布式业务架构中非常常用,比较常用的软件还有
RabbitMQ、Kafka、RocketMQ、ActiveMQ 等
队列介绍:
队列当中的 消息由不同的生产者写入也会有不同的消费者取出进行消费处理,但是一个消息一定是
只能被取出一次也就是被消费一次。
生产者发布消息:
[root@redis-s4 ~]# redis-cli
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> LPUSH channel1 msg1 #从管道的左侧写入
(integer) 1
127.0.0.1:6379> LPUSH channel1 msg2
(integer) 2
127.0.0.1:6379> LPUSH channel1 msg3
(integer) 3
127.0.0.1:6379> LPUSH channel1 msg4
(integer) 4
127.0.0.1:6379> LPUSH channel1 msg5
(integer) 5
查看队列所有消息:
127.0.0.1:6379> LRANGE channel1 0 -1
1) "msg5"
2) "msg4"
3) "msg3"
4) "msg2"
5) "msg1"
消费者消费消息:
127.0.0.1:6379> RPOP channel1 #从管道的右侧消费
"msg1"
127.0.0.1:6379> RPOP channel1
"msg2"
127.0.0.1:6379> RPOP channel1
"msg3"
127.0.0.1:6379> RPOP channel1
"msg4"
127.0.0.1:6379> RPOP channel1
"msg5"
127.0.0.1:6379> RPOP channel1
(nil)
再次验证队列消息:
127.0.0.1:6379> LRANGE channel1 0 -1
(empty list or set) #队列中的消息已经被已全部消费完毕
发布者订阅模式:
在发布者订阅者模式下,发布者将消息发布到指定的 channel 里面,凡是监听该 channel 的消费者
都会收到同样的一份消息,这种模式类似于是收音机模式,即凡是收听某个频道的听众都会收到主持
人发布的相同的消息内容。
此模式常用语群聊天、群通知、群公告等场景。
Subscriber:订阅者
Publisher:发布者
Channel:频道
订阅者监听频道:
[root@redis-s4 ~]# redis-cli
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> SUBSCRIBE channel1 #订阅者订阅指定的频道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel1"
3) (integer) 1
发布者发布消息:
127.0.0.1:6379> PUBLISH channel1 test1 #发布者发布消息
(integer) 2
127.0.0.1:6379> PUBLISH channel1 test2
(integer) 2
127.0.0.1:6379>
各订阅者验证消息:
订阅多个频道:
订阅指定的多个频道
> SUBSCRIBE channel1 channel2
订阅所有频道:
127.0.0.1:6379> PSUBSCRIBE *
订阅匹配的频道:
> PSUBSCRIBE chann* #匹配订阅多个频道
redis 其他命令:
CONFIG:
config 命令用于查看当前 redis 配置、以及不重启更改 redis 配置等
更改最大内存:
127.0.0.1:6379> CONFIG set maxmemory 8589934592
OK
127.0.0.1:6379> CONFIG get maxmemory
1) "maxmemory"
2) "8589934592"
设置连接密码:
127.0.0.1:6379> CONFIG SET requirepass 123456
OK
或当前配置:
info:
显示当前节点 redis 运行状态信息
SELECT:
切换数据库
keys:
查看当前库下的所有 key:
BGSAVE:
手动在后台执行 RDB 持久化操作
DBSIZE:
返回当前库下的所有 key 数量
FLUSHDB:
强制清空当前库中的所有 key
FLUSHALL:
强制清空当前 redis 服务器所有数据库中的所有 key,即删除所有数据