Redis实战(四):redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU
生活随笔
收集整理的這篇文章主要介紹了
Redis实战(四):redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
啤酒理論
Buffer機制,減少沒必要的來回調用
前置知識
只要和redis建立了連接,發送字符串,就能交互
管道
發布 / 訂閱
help @pubsub
發送者
訂閱者
PSUBSCRIBE pattern [pattern ...]summary: Listen for messages published to channels matching the given patternssince: 2.0.0PUBLISH channel messagesummary: Post a message to a channelsince: 2.0.0PUBSUB subcommand [argument [argument ...]]summary: Inspect the state of the Pub/Sub subsystemsince: 2.8.0PUNSUBSCRIBE [pattern [pattern ...]]summary: Stop listening for messages posted to channels matching the given patternssince: 2.0.0SUBSCRIBE channel [channel ...]summary: Listen for messages published to the given channelssince: 2.0.0UNSUBSCRIBE [channel [channel ...]]summary: Stop listening for messages posted to the given channelssince: 2.0.0聊天室架構模型
- 每個人能夠收到實時消息
- 上滑加載最近3天消息
- 再上滑加載歷史消息,所有消息都應該被存在數據庫中
可以啟動不同的redis去接收訂閱的消息,有的用來推送給用戶,有的用來發給kafka,繼而存儲到數據庫中
Redis事務
假設是client1綠色先開啟的事務multi,client2黃色后開啟的事務,
并且假設client2黃色的exec先到達,client1綠色的exec后到達:
是先發送exec的客戶端先執行命令
在事務中 watch 監控某個 key,如果發生改變,就不執行事務
為什么 Redis 不支持回滾(roll back)
如果你有使用關系式數據庫的經驗, 那么 “Redis 在事務失敗時不進行回滾,而是繼續執行余下的命令”這種做法可能會讓你覺得有點奇怪。
以下是這種做法的優點:
- Redis 命令只會因為錯誤的語法而失敗(并且這些問題不能在入隊時發現),或是命令用在了錯誤類型的鍵上面:這也就是說,從實用性的角度來說,失敗的命令是由編程錯誤造成的,而這些錯誤應該在開發的過程中被發現,而不應該出現在生產環境中。
- 因為不需要對回滾進行支持,所以 Redis 的內部可以保持簡單且快速。
有種觀點認為 Redis 處理事務的做法會產生 bug , 然而需要注意的是, 在通常情況下, 回滾并不能解決編程錯誤帶來的問題。 舉個例子, 如果你本來想通過 INCR 命令將鍵的值加上 1 , 卻不小心加上了 2 , 又或者對錯誤類型的鍵執行了 INCR , 回滾是沒有辦法處理這些情況的。
RedisBloom模塊 - 布隆過濾器
解決緩存穿透問題
布隆過濾器:用小空間解決大量數據匹配的問題
三種架構情況:
更新完數據庫,需要同步刷緩存 -> 雙寫問題
緩存淘汰策略
下節課預習
緩存常見問題:
- 擊穿
- 雪崩
- 穿透
- 一致性
總結
以上是生活随笔為你收集整理的Redis实战(四):redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多线程与高并发(五):强软弱虚四种引用以
- 下一篇: MySQL调优(四):MySQL索引优化