編譯實戰 | 手摸手教你在Windows環境下運行Redis6.x

原創:微信公眾號 碼農參上,歡迎分享,轉載請保留出處。

哈嘍大家好啊,我是沒事就願意瞎搗鼓的Hydra。

不知道有沒有小夥伴像我一樣,平常開發中用的是windows操作系統,有時候想裝點什麼軟件,一看只支持linux系統,無奈要麼啟動虛擬機、要麼裝在雲服務器上。

這不前幾天又是這樣,剛想用一下Redis 6.x版本來嘗試一下新特性,打開官網一看,好傢夥我直呼內行,果然不支持windows系統:

不過雖然redis的官網上不提供windows版本下載,但是這也難不倒我這個面向百度編程的小能手,一番查找後讓我找到了微軟在github上維護的幾個可以在windows上運行的redis版本:

項目的git地址是 //github.com/MicrosoftArchive/redis/releases,我翻了一下,微軟維護了2.x3.x的多個windows版本redis,不過比較遺憾,在維護到3.0.504正式版本後就放棄了更新。

不過問題不大,眼看微軟撂挑子不幹了,波蘭的熱心市民 Tomasz Poradowski 先生這時候站出來,繼續開始提供可以在windows上運行的4.x5.x版本的redis,並且從2017年到2022年一干就是5年。

3

項目git地址是//github.com/tporadowski/redis/releases,沒錯,其實我本地環境運行的redis-5.0.9就是以前從這裡下載的,而且綠色版使用起來真的是乾淨又衛生,所以我強烈建議大家給這位老哥來一個Star支持一下。

不過繞了這麼一大圈,我的問題還是沒有解決啊,既然沒有現成的可以在windows上運行的redis6.x版本,那我們乾脆就來自己編譯一個吧。

初識Cygwin

首先介紹一下我們今天要用到的工具Cygwin,先簡單看一下它的官網 //cygwin.com/,上面很清晰的解釋了幾個容易引起大家混淆的問題:

15

先解釋了cygwin是什麼:

  • cygwin是GNU和開源工具的大型集合,它提供了類似於在windows上運行linux發行版的模擬環境功能
  • cygwin是一個動態鏈接庫cygwin1.dll,它提供了大量POSIX的API功能

再糾正了大家的常見誤區:

  • cygwin並不能讓原生的linux應用程序運行在windows上,如果想讓它運行在windows上,那麼你必須通過源代碼重新構建你的應用
  • cygwin並不能神奇地讓原生的windows應用程序感知到unix的功能,例如信號、偽終端等

其實可以用一句話來概括一下它的功能,cygwin是一個可運行於原生windows系統上的POSIX兼容環境,可以通過重新編譯將linux應用移植到windows中

好了,這樣簡單了解一下cygwin的功能對我們來說暫時就足夠了,下面我們看看如何使用它來編譯windows版本redis。

Cygwin安裝

下面我們先進行編譯工具Cygwin的下載和安裝,在它的官網上就可以直接下載,完成後就可以開始安裝了。下面我會貼出一些需要特殊配置的步驟,如果沒有特殊說明的話,那麼直接痛快的點擊下一步就可以了。

網絡連接配置這裡選擇第二項,也就是直接連接,不需要任何代理方式:

在選擇下載源這一步,先手動輸入User URL,添加阿里雲的鏡像//mirrors.aliyun.com/cygwin,點擊add後再選擇我們剛才添加的這個源,然後點擊下一步:

5

接下來選擇需要下載安裝的組件包,我們只需要下載我們編譯相關的模塊即可。先通過上面的搜索框進行定位,選擇安裝Devel模塊下面的makegcc-coregcc-g++,以及Libs模塊下的libgcc1libgccpp1,然後點擊New這一列的Skip,選擇要安裝的版本號,全部添加完成後點擊下一步:

接下來會自動進行下載上面選擇的模塊,等待全部下載結束後安裝就完成了:

安裝完成後,我們運行Cygwin64 Terminal,通過命令檢測可以看到StatusOK,表示cygwin運行正常:

編譯redis源碼

準備好編譯工具後,我們接下來先下載redis6.x版本的源碼,6.0.16的下載地址為:

//download.redis.io/releases/redis-6.0.16.tar.gz

cygwin安裝完成後,會在它的安裝路徑的home目錄下,創建一個以你登錄系統的用戶名來命名的目錄,我們把下載完成後的壓縮包放到這個cygwin64\home\${user}目錄下,在cygwin命令行中先執行解壓命令:

tar -xvf redis-6.0.16.tar.gz

使用下面的命令先切換到解壓後的根目錄,然後執行編譯和安裝:

cd redis-6.0.16 
make && make install 

點擊回車,然後就開始漫長的等待吧,不得不說編譯和安裝的過程真的很慢,我這大概花了20分鐘才全部完成。

不出意外的最後果然出現了意外,報了兩個Error,不過貌似沒有什麼太大影響,切換到src目錄下,就已經可以看到編譯完成後已經生成了6個exe可執行文件了:

但是如果這個時候雙擊redis-server.exe嘗試進行啟動的話,那麼就會報錯提示缺少dll動態鏈接庫:

我們可以在cygwin的bin目錄下找到這個文件,為了方便,把可執行文件、動態鏈接庫文件、redis配置文件拷貝到一個單獨的目錄下再次嘗試啟動:

這次能夠正常啟動成功,我們再使用客戶端連接工具連接並進行測試,終於,6.0.16版本的redis可以在windows環境下正常運行了。

最後

忙活一大頓總算成功了,我們也終於可以在windows上體驗redis6.x版本了,不過這裡還是給小夥伴們提個醒,這樣編譯的redis我們平常自己在學習中體驗一下就可以了,盡量不要用在生產上。

因為cygwin編譯後的程序,相當於在windows系統上模擬實現了POSIX兼容層,應用程序在底層多了一層函數調用,因此效率比運行在linux系統的原生應用低了很多。因此,這樣在windows上運行的redis,無疑會損失掉它引以為傲的高性能這一優勢。

秉持着好東西就要分享的原則,我也已經把編譯好的windows版redis6.0.16上傳到了網盤,有需要的小夥伴們可以通過下面的方式獲取:

公眾號『碼農參上』後台回復 redis6 ,自動獲取網盤下載鏈接

那麼,這次的分享就到這裡,我是Hydra,下期見。

作者簡介,碼農參上,一個熱愛分享的公眾號,有趣、深入、直接,與你聊聊技術。個人微信DrHydra9,歡迎添加好友,進一步交流。