- 注意: 撰写本文目的主要是为了给自己做一个备忘录,如果你学过Redis并且希望从本文中找到一些忘记的知识点,那么你可以阅读本文章。由于文章内讲解并不是很多,因此此文章并不适合小白入门使用。
1.事务
1.1事务简介
是什么:
- 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,
按顺序地串行化执行而不会被其他命令插入,不允许加塞
。
能干嘛:
一个队列中,一次性、顺序性、排他性地执行一系列命令。
怎么玩:
- 常用命令
- Case1:正常执行
- Case2:放弃事务
- Case3:全体连坐
如果一个指令在加入事务时发生错误,则事务块中所有的指令失效。 - Case4:冤头债主
如果一个指令可以加入到事务中,但逻辑上是错误的,则在执行事务块中的语句时此语句会报错,但不会影响到其他的语句。 - Case5:watch监控
1.2.Redis事务命令
使用示例:
> MULTI
> set k1 v1
> set k2 v2
> get k2
> set k3 v3
> EXEC
输出结果:
OK
OK
"v2"
OK
1.3.watch监控
- 监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。
监控
watch key
取消监控
unwatch
- 一旦执行了exec操作,之前加的监控锁都会被取消掉。
小结:
- 通过WATCH命令在事务执行之前监控了多个Keys,倘若在WATCH之后有任何Key的值发生了变化,EXEC命令执行的事务都将被抛弃,同时返回Nullmulti-bulk应答以通知调用者事务执行失败。
1.4.事务3阶段、3特性
3阶段
3特性
2.发布与订阅
2.1.是什么
- 进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
- 订阅/发布消息图: