从零学习redis(11)--- 管道、发布订阅、脚本
redis 刘宇帅 6年前 阅读量: 1219
管道
redis 是基于客户端-服务端模型以及请求/响应协议的TCP服务。也就是说每次请求都需要建立 TCP 连接并发送命令和接受返回数据。所以当我们有大量的命令需要执行的话那么就需要花费太多的时间在 TCP 连接建立上。
依次 TCP 连接之后可以执行多条命令这样就可以提升命令执行速度,减少不必要的消耗,redis 就是通过支持管道技术来实现的。
管道示例如下:
> $ (printf "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379
+PONG
+PONG
+PONG
发布订阅
发布订阅实现了不同的客户端对不同的频道发送消息或者订阅不同的频道接收消息。
我们现在一个客户端连接中订阅频道 one 和 two
127.0.0.1:6379> subscribe one two
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "one"
3) (integer) 1
1) "subscribe"
2) "two"
3) (integer) 2
在另外一个客户端像 one 发送消息
127.0.0.1:6379> publish one hello
(integer) 1
127.0.0.1:6379> publish one world
(integer) 1
在第一个客户端可以看到如下输出
1) "message"
2) "one"
3) "hello"
1) "message"
2) "one"
3) "world"
使用 UNSUBSCRIBE命令取消订阅一个或多个或所有频道
127.0.0.1:6379> unsubscribe one
1) "unsubscribe"
2) "one"
3) (integer) 0
127.0.0.1:6379> unsubscribe
1) "unsubscribe"
2) (nil)
3) (integer) 0
订阅也支持模式匹配订阅
psubscribe news.*
以上命令订阅了 news.music news.book等频道。
当模式匹配订阅和频道订阅重复时会收到两次消息,一条message类型,一条pmessage类型。
psubscribe news.*
subscribe news.book
脚本
脚本是 redis 服务器内置对 Lua 脚本的支持,并未大量使用过。