背景說明
- 在github上面僅能夠找到 redis3.2.100的Windows安裝文件
- 比較新的版本比較難以找到, 同事經常出現這個版本的redis卡死的情況, 所以想嘗試進行一下升級.
第一部分下載文件
下載 cygwin的安裝文件
https://cygwin.com/setup-x86_64.exe
- 注意:公司里的網速可能會導致不好下載.
下載redis的安裝文件
https://download.redis.io/releases/redis-6.0.10.tar.gz
- 注意:我用2021.6.25 的最新版本 redis6.2.4 版本進行安裝時出現錯誤提示無法進行安裝. 所以退而求其次使用這個版本安裝成功了.
第二部分 cygwin的安裝與設置
雙擊安裝即可.
注意選擇使用Install from internet
-
需要注意使用 Root directory 需要記住
-
后續編譯的文件也是以這個文件為根目錄進行處理的.
-
下一步的LocalPackagesDirectory 只的是互聯網下載的臨時路徑.
注意選擇互聯網安裝可以add 一個 阿里雲的 默認鏡像,不然可能無法安裝
http://mirrors.aliyun.com/cygwin/
- 注意這里需要通過Search 將部分組件添加進來以便進行編譯
需要添加的主要有:
make,gcc-core,gcc-g++ libgcc1 libgccpp1
-
注意 每一個單獨的包都需要單獨進行下載然后進行安裝不能偷懶.
-
注意不要全部下載 不然會打爆磁盤
-
選擇完成之后點擊下一步進行安裝即可
-
注意 這一步可能會很漫長,需要慢慢等待,有下載和安裝的步驟
-
安裝完成之后就可以進行后續的編譯操作了
-
安裝完只有大概下載120m的文件,安裝完大約 600m磁盤大小
第三步 編譯安裝redis
-
啟動cygwin 注意 可以選擇第一步里面選擇的root 路徑直接雙擊bat文件即可.
-
雙擊bat 就會在 此路徑下的 home 創建當前用戶的一個目錄名
-
可以講redis的tar包放進來, 這里我使用最新版,驗證錯誤內容.
-
進行解壓縮和安裝處理
tar -zxvf redis-6.2.4.tar.gz
cd redis-6.2.4
make
就會進入編譯過程截圖如下:
注意: 這個版本會報錯
debug.c: 在函數‘dumpX86Calls’中:
debug.c:1751:5: 錯誤:未知的類型名‘Dl_info’
1751 | Dl_info info;
| ^~~~~~~
debug.c:1761:13: 警告:implicit declaration of function ‘dladdr’; did you mean ‘s_addr’? [-Wimplicit-function-declaration]
1761 | if (dladdr((void*)target, &info) != 0 && info.dli_sname != NULL) {
| ^~~~~~
| s_addr
debug.c:1761:54: 錯誤:在非結構或聯合中請求成員‘dli_sname’
1761 | if (dladdr((void*)target, &info) != 0 && info.dli_sname != NULL) {
| ^
debug.c:1763:63: 錯誤:在非結構或聯合中請求成員‘dli_sname’
1763 | printf("Function at 0x%lx is %s\n",target,info.dli_sname);
| ^
debug.c: 在函數‘dumpCodeAroundEIP’中:
debug.c:1772:5: 錯誤:未知的類型名‘Dl_info’
1772 | Dl_info info;
| ^~~~~~~
In file included from debug.c:31:
debug.c:1781:17: 錯誤:在非結構或聯合中請求成員‘dli_sname’
1781 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2735:27: 附注:in definition of macro ‘serverLog’
2735 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1781:33: 錯誤:在非結構或聯合中請求成員‘dli_saddr’
1781 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2735:27: 附注:in definition of macro ‘serverLog’
2735 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1781:49: 錯誤:在非結構或聯合中請求成員‘dli_fname’
1781 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2735:27: 附注:in definition of macro ‘serverLog’
2735 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1781:65: 錯誤:在非結構或聯合中請求成員‘dli_fbase’
1781 | info.dli_sname, info.dli_saddr, info.dli_fname, info.dli_fbase,
| ^
server.h:2735:27: 附注:in definition of macro ‘serverLog’
2735 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1782:17: 錯誤:在非結構或聯合中請求成員‘dli_saddr’
1782 | info.dli_saddr);
| ^
server.h:2735:27: 附注:in definition of macro ‘serverLog’
2735 | _serverLog(level, __VA_ARGS__);\
| ^~~~~~~~~~~
debug.c:1783:44: 錯誤:在非結構或聯合中請求成員‘dli_saddr’
1783 | size_t len = (long)eip - (long)info.dli_saddr;
| ^
debug.c:1789:38: 錯誤:在非結構或聯合中請求成員‘dli_saddr’
1789 | void *base = (void *)info.dli_saddr;
| ^
make[1]: *** [Makefile:368:debug.o] 錯誤 1
make[1]: 離開目錄“/home/Administrator/redis-6.2.4/src”
make: *** [Makefile:6:all] 錯誤 2
網上沒找到方法
- 換成 redis6.0.10 之后就可以了.
- 可以看一下編譯時間
第四步 啟動驗證
-
需要在 redis-6.0.10/src 里面講 所有的二進制文件抽取出來
-
需要在cygwin 的bin 目錄下面的
cygwin1.dll
這個文件一起放到一個特定的路徑里面 -
需要在redis的目錄里面講redis.conf 同時copy過來便於使用.
-
注意 需要修改redis.conf 內的密碼
為了簡單起見可以講 deamonize 打開
修改配置節
daemonize yes
可以創建一個配置文件用來一鍵啟動redis
在上一層目錄創建文件
redis.bat
內容為:
taskkill /im redis-server.exe /F
cd redis
redis-server.exe redis.conf
進行啟動驗證
可以找人進行其他驗證了.