18 发布与订阅

频道的订阅与退订

SUBSCRIBE

1
2
3
struct redisServce {
dict *pubsub_channels; // key 频道,values 客户端链表
}

client-10086: SUBSCRIBE “news.sport” “news.movie”

UNSUBSCRIBE

client-10086: UNSUBSCRIBE “news.sport” “news.movie”

模式的订阅与退订

1
2
3
struct redisServer{
list *pubsub_patterns; // pattern: 被订阅的模式 client: 订阅模式的客户
}

PSUBSCRIBE

client-9: PSUBSCRIBE “news.*”

PUNSUBSCRIBE

发送消息

将消息发送给频道订阅者

将消息发送给模式订阅者

查看订阅信息

  • PUBSUB CHANNELS [pattern]
  • PUBSUB NUMSUM [channel-1 channel-2 … channel-n]
  • PUBSUB NUMPAT

  • Redis订阅信息丢失问题

Redis实现简单消息队列

Jedis 与 ShardedJedis 设计

征服 Redis + Jedis + Spring (三)—— 列表操作

使用Spring Data Redis操作Redis(一)

19 事务

通过MULTI、EXEC、WATCH等命令来实现事务功能。

实现

WATCH命令的实现

事务的ACID性质