2017年10月2日 星期一

Redis on windows - 安裝與設定

最近的專案想嘗試導入redis,不過開發的環境是windows server。
這篇是介紹在windows上安裝redis以及設定上踩過的雷。



下載:

安裝檔:
https://github.com/MicrosoftArchive/redis/releases

本篇使用版本3.2.100,下載Redis-x64-3.2.100.msi來進行安裝



安裝:

雙擊msi檔案進行安裝
首先是安裝路徑,使用預設的C:\Program Files\Redis\



設定Redis使用的Port。一樣預設使用6379並且加入防火牆的例外清單



限制Redis的記憶體使用上限。依照需求設定即可,可設可不設。



安裝好了之後會自動變成Windows service跑在背景。
現在我們使用Redis client tools來嘗試連到Redis server。
首先在安裝Redis的server中,開啟CMD進入Redis安裝目錄下(預設是C:\Program Files\Redis\)。
輸入 
redis-cli -h 127.0.0.1
這個命令會使用Redis client端軟體(redis-cli.exe)連到Redis server(即位置127.0.0.1)
成功連上之後輸入 
ping
會得到server的回應 
PONG



以上,收到PONG訊息表示Redis service沒有問題也可以開始使用了....

But!!

人生最悲哀的就是那個But...

筆者從另外一台機器想要存取Redis時卻發現無法連線,使用telnet指令嘗試Redis server的6379 port也發現沒有通。

整理一下目前的狀況:
1. 從Redis server(ip: 10.1.1.1)裡使用redis-client可以連線到127.0.0.1的Redis service
2. 從另外一台機器(ip: 10.1.1.2)連接不到Redis Server,telnet 6379 port也沒有通
3. Redis server上的防火牆在安裝時也已經allow 6379 port了

難道Redis只允許本機(127.0.0.1)的連線嗎?
回到Redis server,在CMD輸入指令
netstat -ano | findstr :6379
這個指令可以列出使用6379 port的服務的一些資訊


從圖中可以看到列出的資訊寫到TCP  127.0.0.1:6379,這邊顯示Redis預設是只監聽127.0.0.1的連線。

設定:

找到問題點就很好解決,這些相關的設定一定有個設定檔讓使用者設定。
回到Redis安裝目錄下(C:\Program Files\Redis\),找到redis.windows-service.conf。

(附註:因為筆者的Redis是windows service啟動的,故修改redis.windows-service.conf。如果是使用redis-server.exe來啟動Redis的話,則需要修改的是redis.windows.conf)

其中NETWORK的章節有個bind的設定
將bind 127.0.0.1多加上Redis server的ip即可
bind 127.0.0.1 10.1.1.1



改好後存檔、重啟Redis service後即可。回到另一台機器後就會發現能成功連上redis server了。

1 則留言: