一、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)
?
?
?
?