Redis知识整理(七) – 进阶(管道&发布订阅)
一、Redis的管道(Pipelining)
解释
一次发送多次命令
命令行操作
#安装nc
yum install nc
#运行nc 建立socket连接
--- nc localhost 6379
keys *
0
set k1 hello
+OK
#去redis查看结果
6379> keys *
k1
6370> get k1
"hello"
#测试echo识别\n
--- echo -e "sdsd\nbdsds"
sdsd
bdsds
#使用管道
--- echo -e "set k2 99\n incr k2\n get k2" | nc localhost 6379
+OK
:100
$3
100
二、批量导入数据
解释
冷启动等情境下可能会用到,利用管道的原理
操作
#redis-cli只识别doc下的换行符 \r\n
#安装unix2dos工具可进行转码
yum install unix2dos
server> unix2dos d1.txt
server> cat d1.txt | redis-cli --pipe
三、发布订阅(Pub/Sub)
解释
利用redis的list类型
操作
#推送消息
> PUBLISH ooxx hello
(integer) 0
# 注意:先订阅才能查看
> SUBSCRIBE ooxx
Reading messages...
1) "subscribe"
2) "ooxx"
3) (integer) 1
#注意:此时订阅者在线状态
#推送消息
> PUBLISH ooxx xxxxx
(integer) 0
# 注意:先订阅才能查看
> SUBSCRIBE ooxx
Reading messages...
1) "subscribe"
2) "ooxx"
3) (integer) 1
1) "message"
2) "ooxx"
3) "xxxxx"
使用场景
1⃣️ 直播下的消息发送即可选用 发布订阅模式
客户端消息设计
特点:
- 实时性
- 历史数据
- 三天内热数据 — sorted_set 日期作为score,消息作为value
- 更老的旧数据 — 数据库
实际架构:
一个client进程pub消息
- 一个client进程sub消息,写入zet
- 另一个service同样sub消息,再写入mq/…,最终落库