一、Redis队列
1.1、订阅 subscribe ch1 ch2
1.2 publish:发布消息 publish channel message
1.3 unsubscribe: 退订 channel
1.4 模式匹配 psubscribe ch*
模糊发布,订阅,退订, p* <channelName>
1.5 发布订阅原理
订阅某个频道或模式:
客户端 (client) :
pubsub_channels,该属性表明了该客户端订阅的所有频道;
pubsub_patterns,该属性表示该客户端订阅的所有模式;
服务器端 (RedisServer) :
pubsub_channels,该服务器端中的所有频道以及订阅了这个频道的客户端;
pubsub_patterns,该服务器端中的所有模式和订阅了这些模式的客户端;
二、Redis事务
2.1 redis事务说明
2.2 redis事务命令
事务处理:watch key 的值改变,引起另外一个线程修改key事务失败。
2.3 redis事务执行
2.3.1 事务开始(multi)
在RedisClient中,有属性flags,用来表示是否在事务中flags=REDIS MULTI
2.3.2 命令入队(watch {key})
RedisClient将命令存放在事务队列中(EXEC,DISCARD,WATCH,MULTI除外)
2.3.3 事务队列
用于存放命令multiCmd *commands
2.3.4 执行事务(exec)
RedisClient向服务器端发送exec命令,RedisServer会遍历事务队列,执行队列中的命令,最后将执行的结果一次性返回给客户端。如果某条命令在入队过程中发生错误,redisClient将flags置为REDIS_DIRTY_EXEC,EXEC命令将会失败返回。
2.4 redis事务缺点
1、redis弱事务
2、中间语法错误事务整体失败
3、事务不支持回滚
三、Redis监视
四、Redis慢查询
4.1 慢查询配置
redis.conf配置
Redis使用列表存储慢查询日志,采用队列方式 (FIFO)
config set的方式可以临时设置,redis重启后就无效
config set slowlog-log-slower-than 微秒
config set slowlog-max-len 条数
查看日志: slowlog get [n]
4.2 底层数据结构
Redis使用列表存储慢查询日志,采用队列方式 (FIFO)