Redis Cluster着眼於擴展性,在單個redis內存不足時,使用Cluster進行分片存儲。面試
如何使用過Redis作異步隊列?
通常使用list結構做爲隊列,rpush生產消息,lpop消費消息。當lpop沒有消息的時候,要適當sleep一會再重試。redis
若是不用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事務能夠一次執行多個命令,有如下特色:spa
- 批量操做在發送 EXEC 命令前被放入隊列緩存。
- 收到 EXEC 命令後進入事務執行,事務中任意命令執行失敗,其他的命令依然被執行。
- 在事務執行過程,其餘客戶端提交的命令請求不會插入到事務執行命令序列中。
事務能夠理解爲一個打包的批量執行腳本,但批量指令並不是原子化的操做,中間某條指令的失敗不會致使前面已作指令的回滾,也不會形成後續的指令不作。
最後注意:不少人在學Java高級過程當中不免會遇到各類問題解決不了。爲此我建了個裙 783802103,裏面不少架構師一塊兒交流解答,沒基礎勿進哦!本文的文字及圖片來源於網絡加上本身的想法,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理