redis订阅发布 pub/sub
redis的list的blpop可以实现类似单播的效果,redis本身也提供了发布订阅模式以实现广播的效果
PUBLISH channel message
向指定频道发送消息
SUBSCRIBE channel [channel ...]
订阅频道
redis事务
redis的事务的原子性不同于mysql,它的单条指令具有原子性,但在事务中的一系列指令不具有原子性,即事务中的某一条指令出错不会回滚,会继续执行。
MULTI
标记事务开始
EXEC
执行事务
DISCARD
取消事务
WATCH key [key...]
监听key以实现乐观锁
UNWATCH
取消监听key
127.0.0.1:6379> watch k1 #监听k1,如果在exec事务时,k1发生了变化事务就不会执行
OK
127.0.0.1:6379> multi #标记开启事务
OK
127.0.0.1:6379> set k1 1 #指令入队
QUEUED
127.0.0.1:6379> incr k1 #指令入队
QUEUED
127.0.0.1:6379> exec #执行事务
1) OK
2) (integer) 2
127.0.0.1:6379> get k1
"2"
127.0.0.1:6379>
如果有两个客户端都提交事务并且都操作了同一个key,那么谁的exec先执行,另一个的事务就会出现错误