把redis載入到window服務裡
這兩天在重新做公司內網首頁,資訊都是從別的系統獲取的,產品原來打算直接上靜態頁,jsonp非同步取資料。但是一來jsonp比較坑(一直不喜歡),二來整個頁面的資料都非同步獲取的話,剛剛開啟頁面的時候會空白一片,體驗極其差。所以決定用node.js + express + redis簡單搞下。今天早晨一直在折騰Redis,看了挺多文章,可能是版本或者其他的原因,我遇到的問題他們都沒有提,不過終於還是部署上了,下面把過程寫下給大家參考。
下載Redis
在Redis的官網下載頁上有各種各樣的版本,我這次是在windows上部署的,要去GitHub上下載。目前的是2.8.12版的,直接解壓,在\bin\release
啟動Redis
直接在上圖的目錄開啟命令視窗,執行:
- redis-server redis.windows.conf
結果就悲劇了,提示:QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.: unknown error
。原因是記憶體分配的問題(如果你的電腦夠強悍,可能不會出問題)。解決方法有兩個,第一:啟動的時候使用--maxmemory
命令限制Redis的記憶體:
- redis-server redis.windows.conf --maxmemory 200m
第二種方法就是修改配置檔案redis.windows.conf
:
- maxmemory 209715200
注意單位是位元組,改完後如下:
之後再執行redis-server redis.windows.conf
就可以啟動了:
但是問題又來了,關閉cmd視窗就會關閉Redis,難道伺服器上要一直開著嗎?這顯然是不科學的,下面看怎麼在伺服器上部署。
部署Redis
其實Redis是可以安裝成windows服務的,開機自啟動,命令如下:
- redis-server --service-install redis.windows.conf
安裝完之後,就可看到Redis已經作為windows服務了:
但是安裝好之後,Redis並沒有啟動,啟動命令如下:
- redis-server --service-start
停止命令:
- redis-server --service-stop
還可以安裝多個例項
- redis-server --service-install –service-name redisService1 –port 10001
- redis-server --service-start –service-name redisService1
- redis-server --service-install –service-name redisService2 –port 10002
- redis-server --service-start –service-name redisService2
- redis-server --service-install –service-name redisService3 –port 10003
- redis-server --service-start –service-name redisService3
解除安裝命令:
- redis-server --service-uninstall
最後提示一下:2.8版本的不支援32位系統,32位系統要去下載2.6版本的。2.6版本的無法像上面一樣方便的部署,它提供一個叫RedisWatcher的程式來執行redis server,Redis停止後會自動重啟。
另外推薦一個Redis視覺化管理工具:Redis Desktop Manager,官網的下載地址被牆了,可以在我的網盤下載 v0.7.6版,放個截圖: