一、pubsub
简介
redis的pub/sub设计的很轻量级,做到了基本的发布和订阅,不支持持久化等企业级特性。
命令
- SUBSCRIBE
,订阅一个或多个channel,接收channel新增的消息。
- PSUBSCRIBE
, 订阅pattern匹配的channel。pattern支持 *代表一个或多个字符,?代表一个字符。
- UNSUBSCRIBE
,取消订阅
- PUNSUBSCRIBE
,取消订阅pattern,同样支持*和?
- PUBLISH
, 在channel中发布消息 message
- PUBSUB
,PUBSUB提供对订阅的总览,subcommand有几种,, pubsub channels [pattern], 查看活跃频道(至少有一个订阅者),,pubsub numsub [channel1 channel2 ...],查看指定频道的订阅数,,
二、transactions
简介
redis提供部分事务支持,,redis中封装一系列操作,一起执行,要么一起成功,要么一起失败,,在事务执行时,不会被其它客户端的操作打断
命令
- watch
,watch一个或多个key,事务执行中若key值被改变时,事务会失败。
- unwatch
, 取消对所有key的watch
- multi
,标志一个事务的开始
- exec
,执行multi后加入执行队列的所有命令
- discard
,取消执行multi后的命令。
PS
使用事务时可能会遇上以下两种错误:
- 事务在执行 EXEC之前,入队的命令可能会出错。比如说,命令可能会产生语法错误(参数数量错误,参数名错误,等等),或者其他更严重的错误,比如内存不足(如果服务器使用 maxmemory 设置了最大内存限制的话)。
- 命令可能在EXEC调用之后失败。举个例子,事务中的命令可能处理了错误类型的键,比如将列表命令用在了字符串键上面,诸如此类。
redis只会对入队过程出错的事务进行全部不执行,,对exec过程中出错的命令,跳过错误的命令,继续向下执行。
入队前出错 ,
,整个事务都失败了。
执行时出错 ,执行过程中出错,执行正确的命令。