1. 程式人生 > 其它 >Redis在Windows上和Linux上的區別

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上時必定會有一些調整。