Redis問題---個人記,不喜勿噴

 

  • redis是多線程還是單線程?(回答單線程的請回吧,爲什麼請回,請往下看)

單線程指的是網絡請求模塊使用了一個線程(所以不需考慮併發安全性),即一個線程處理所有網絡請求,其他模塊仍用了多個線程。
redis中io多路複用器模塊是單線程執行,事件處理器也是單線程執行,兩個線程不一樣。所以實際redis應該是單進程多線程,只是不同的模塊都用的單線程實現。
兩個維度來舉例:
(1)若是client發送命令到server的話,server處理命令是單線程逐條進行的。
(2)server內部可以是多線程的,比如aof持久化,假設策略每秒,那就是再單獨開啓一個線程去執行aof文件持久化操作,這就是多線程了。

 

  • redis的持久化開啓了RDB和AOF下重啓服務是如何加載的?(10個人9個回答錯誤)

Redis會優先使用AOF日誌來恢復數據,因爲AOF保存的文件比RDB文件更完整。
RDB是一種快照存儲持久化方式,默認生成的文件名爲dump.rdb
rdb文件恢復數據比較快,rdb文件非常緊湊,適合於數據備份,通過RDB進行數據備,由於使用子進程生成,所以對Redis服務器性能影響較小。
如果服務器宕機的話,採用RDB的方式會造成某個時段內數據的丟失

通過RDB進行數據備,由於使用子進程生成,所以對Redis服務器性能影響較小。

AOF只是追加日誌文件,因此對服務器性能影響較小,速度比RDB要快,消耗的內存較少。
AOF方式生成的日誌文件太大,即使通過AFO重寫,文件體積仍然很大;恢復數據的速度比RDB慢

  • redis如果做集羣該如何規劃?AKF/CAP如何實現和設計?

如果希望快速部署,那麼可以考慮單節點部署方式。
如果只需要考慮可靠性,那麼可以考慮主從複製模式。
如果想要保證高可用,不需要考慮儲存成本可以考慮哨兵模式。
如果想提高集羣的擴展性和可用性,不要求保證數據的強一致性,且沒有批量操作,那麼可以考慮集羣模式。

  • 10萬用戶一年365天的登錄情況如何用redis存儲,並快速檢索任意時間窗內的活躍用戶?

 Bitmap是一串連續的2進制數字(0或1),每一位所在的位置爲偏移(offset),在bitmap上可執行AND,OR,XOR以及其它位操作。
 佔空間少

 

  • 100萬併發4G數據,10萬併發400G數據,如何設計Redis存儲方式?

    哨兵模式;集羣模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章