Redis6.x 在Windows上面編譯安裝的過程


背景說明


  • 在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的安裝與設置


雙擊安裝即可.
image
注意選擇使用Install from internet

  • 需要注意使用 Root directory 需要記住

  • 后續編譯的文件也是以這個文件為根目錄進行處理的.
    image

  • 下一步的LocalPackagesDirectory 只的是互聯網下載的臨時路徑.
    image

注意選擇互聯網安裝可以add 一個 阿里雲的 默認鏡像,不然可能無法安裝

http://mirrors.aliyun.com/cygwin/

image

  • 注意這里需要通過Search 將部分組件添加進來以便進行編譯
    需要添加的主要有:
make,gcc-core,gcc-g++ libgcc1 libgccpp1

image

  • 注意 每一個單獨的包都需要單獨進行下載然后進行安裝不能偷懶.

  • 注意不要全部下載 不然會打爆磁盤

  • 選擇完成之后點擊下一步進行安裝即可
    image

  • 注意 這一步可能會很漫長,需要慢慢等待,有下載和安裝的步驟
    image

  • 安裝完成之后就可以進行后續的編譯操作了

  • 安裝完只有大概下載120m的文件,安裝完大約 600m磁盤大小


第三步 編譯安裝redis


  • 啟動cygwin 注意 可以選擇第一步里面選擇的root 路徑直接雙擊bat文件即可.
    image

  • 雙擊bat 就會在 此路徑下的 home 創建當前用戶的一個目錄名

  • 可以講redis的tar包放進來, 這里我使用最新版,驗證錯誤內容.
    image

  • 進行解壓縮和安裝處理

tar -zxvf redis-6.2.4.tar.gz
cd redis-6.2.4
make

就會進入編譯過程截圖如下:
image

注意: 這個版本會報錯

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 之后就可以了.
  • 可以看一下編譯時間
    image

第四步 啟動驗證


  • 需要在 redis-6.0.10/src 里面講 所有的二進制文件抽取出來

  • 需要在cygwin 的bin 目錄下面的 cygwin1.dll 這個文件一起放到一個特定的路徑里面

  • 需要在redis的目錄里面講redis.conf 同時copy過來便於使用.
    image

  • 注意 需要修改redis.conf 內的密碼
    image

為了簡單起見可以講 deamonize 打開

修改配置節
daemonize yes

可以創建一個配置文件用來一鍵啟動redis

在上一層目錄創建文件
redis.bat
內容為:

taskkill /im redis-server.exe /F
cd redis
redis-server.exe redis.conf

image

進行啟動驗證

image

可以找人進行其他驗證了.


免責聲明!

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



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