Redis在Windows上和Linux上的區別


在回答這個問題之前,我們先來看兩個面試中經常會被問到的Redis問題

Redis為什么這么快?

  1. 完全基於內存操作
  2. C語言實現,優化過的數據結構,性能高
  3. 單線程,無切換上下文的成本
  4. 異步非阻塞IO(多路復用IO)

再深入一點,多路復用IO是怎么實現的?

在Redis源碼中,很多地方都調用Linux的epoll方法來實現多路復用。

然而Windows系統是沒有epoll方法的,對應的則是IOCP模型。具體這兩者的區別可以看看這個epoll和IOCP之比較

Redis是如何進行持久化的?

  1. RDB 快照,內存數據的二進制序列化文件
  2. AOF 日志,修改內存數據的指令記錄文本

RDB持久化的手動備份命令是bgsave,AOF文件過大的重寫命令是bgrewriteaof

原理都是開辟一個子進程對內存進行處理(注意了是子進程,不是子線程),這就涉及到操作系統的多進程COW(Copy On Write)機制了。

或者換句話說Redis通過Linux系統的fork函數創建子進程,共享內存里面的代碼段和數據段,從而實現了持久化。

然而Windows系統是沒有fork函數的。

總結

總的來說,Redis在Windows和Linux上的區別主要還是操作系統的差異引起的(說起來像是一句廢話)。Redis誕生之初就是基於Linux運行的,移植到Windows上時必定會有一些調整。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM