Redis Cluster著眼于擴展性,在單個redis記憶體不足時,使用Cluster進行分片存盤,
如何使用過Redis做異步佇列?
一般使用list結構作為佇列,rpush生產訊息,lpop消費訊息,當lpop沒有訊息的時候,要適當sleep一會再重試,
如果不用sleep,list還有個指令叫blpop,在沒有訊息的時候,它會阻塞住直到訊息到來,
如果想要生產一次消費多次,可以使用pub/sub主題訂閱者模式,可以實作1:N的訊息佇列,但在消費者下線后,生產的訊息會丟失,想要持久化的話,需要使用訊息佇列如rabbitmq等,
redis如何實作延時佇列?
使用sortedset,拿時間戳作為score,訊息內容作為key呼叫zadd來生產訊息,消費者用zrangebyscore指令獲取N秒之前的資料輪詢進行處理,
如果有大量的key需要設定同一時間過期,需要注意什么?
如果大量的key過期時間設定的過于集中,到過期的那個時間點,redis可能會出現短暫的卡頓現象,一般需要在過期時間上加一個隨機值,使得過期時間分散一些,
Redis單點吞吐量
單點TPS達到8萬/秒,QPS達到10萬/秒,補充下TPS和QPS的概念
- QPS: 應用系統每秒鐘最大能接受的用戶訪問量,每秒鐘處理完請求的次數,注意這里是處理完,具體是指發出請求到服務器處理完成功回傳結果,可以理解在server中有個counter,每處理一個請求加1,1秒后counter=QPS,
- TPS: 每秒鐘最大能處理的請求數,每秒鐘處理完的事務次數,一個應用系統1s能完成多少事務處理,一個事務在分布式處理中,可能會對應多個請求,對于衡量單個介面服務的處理能力,用QPS比較合理,
Redis哈希槽
Redis集群沒有使用一致性hash,而是引入了哈希槽的概念,當需要在 Redis 集群中放置一個 key-value 時,根據 CRC16(key) mod 16384的值,決定將一個key放到哪個桶中,
Redis集群最大節點個數是多少?
Redis集群預分好16384個桶(哈希槽)
Redis事務是什么?
Redis事務可以一次執行多個命令,有以下特點:
- 批量操作在發送 EXEC 命令前被放入佇列快取,
- 收到 EXEC 命令后進入事務執行,事務中任意命令執行失敗,其余的命令依然被執行,
- 在事務執行程序,其他客戶端提交的命令請求不會插入到事務執行命令序列中,
事務可以理解為一個打包的批量執行腳本,但批量指令并非原子化的操作,中間某條指令的失敗不會導致前面已做指令的回滾,也不會造成后續的指令不做,
最后注意:很多人在學Java高級程序中難免會遇到各種問題解決不了,為此我建了個裙 783802103,里面很多架構師一起交流解答,沒基礎勿進哦!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/184526.html
標籤:Java

