1. 程式人生 > >把redis載入到window服務裡

把redis載入到window服務裡

這兩天在重新做公司內網首頁,資訊都是從別的系統獲取的,產品原來打算直接上靜態頁,jsonp非同步取資料。但是一來jsonp比較坑(一直不喜歡),二來整個頁面的資料都非同步獲取的話,剛剛開啟頁面的時候會空白一片,體驗極其差。所以決定用node.js + express + redis簡單搞下。今天早晨一直在折騰Redis,看了挺多文章,可能是版本或者其他的原因,我遇到的問題他們都沒有提,不過終於還是部署上了,下面把過程寫下給大家參考。

下載Redis

在Redis的官網下載頁上有各種各樣的版本,我這次是在windows上部署的,要去GitHub上下載。目前的是2.8.12版的,直接解壓,在\bin\release

 目錄下有個壓縮包,這就是我們需要的:

啟動Redis

直接在上圖的目錄開啟命令視窗,執行:


 
  1. redis-server redis.windows.conf

結果就悲劇了,提示:QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.: unknown error 。原因是記憶體分配的問題(如果你的電腦夠強悍,可能不會出問題)。解決方法有兩個,第一:啟動的時候使用--maxmemory 命令限制Redis的記憶體:


 
  1. redis-server redis.windows.conf --maxmemory 200m

第二種方法就是修改配置檔案redis.windows.conf :


 
  1. maxmemory 209715200

注意單位是位元組,改完後如下:

之後再執行redis-server redis.windows.conf 就可以啟動了:

但是問題又來了,關閉cmd視窗就會關閉Redis,難道伺服器上要一直開著嗎?這顯然是不科學的,下面看怎麼在伺服器上部署。

部署Redis

其實Redis是可以安裝成windows服務的,開機自啟動,命令如下:


 
  1. redis-server --service-install redis.windows.conf

安裝完之後,就可看到Redis已經作為windows服務了:

但是安裝好之後,Redis並沒有啟動,啟動命令如下:


 
  1. redis-server --service-start

停止命令:


 
  1. redis-server --service-stop

還可以安裝多個例項


 
  1. redis-server --service-install service-name redisService1 port 10001
  2. redis-server --service-start service-name redisService1
  3. redis-server --service-install service-name redisService2 port 10002
  4. redis-server --service-start service-name redisService2
  5. redis-server --service-install service-name redisService3 port 10003
  6. redis-server --service-start service-name redisService3

解除安裝命令:


 
  1. redis-server --service-uninstall

最後提示一下:2.8版本的不支援32位系統,32位系統要去下載2.6版本的。2.6版本的無法像上面一樣方便的部署,它提供一個叫RedisWatcher的程式來執行redis server,Redis停止後會自動重啟。

另外推薦一個Redis視覺化管理工具:Redis Desktop Manager,官網的下載地址被牆了,可以在我的網盤下載 v0.7.6版,放個截圖: