標籤:
1.為什麼用到Redis?2016-05-0815:54:43
- 在DWCS項目中需要使用到Redis資料庫作為多個worker節點與Master節點進行資料交換的關鍵實現,因為Redis的<key,value>儲存模式,可以很好地與MapReduce模型的實現——mincemeat.py 很好的搭配,實現資料的傳輸以及節點的通訊。
- 而且Redis的資料是先寫入記憶體來進行讀取,速度很快,方便快捷是節省資料讀取,尤其是資料量很大的情況下,的一種很好的方式。
- Redis的Master 與 slave作為主從的配置,主從複製機制可以使得Master 作為 資料“發行者”,對多個Slave (資料“訂閱者”)進行資料的更新,只要slave 節點向master申請進行資料同步sync請求,master 節點的server便會開啟一個背景程式,備份master的Redis資料庫作為一個檔案(記為 backups),如果在server備份還未完成時,Master節點上有Redis的用戶端client串連其server並進行讀寫操作,這個時候Master並不會阻塞client的讀寫,此時兩個進程(client和備份進程)都同步運行。<master 備份時的非阻塞>
- master 可以串連多台slave,但是讀寫資料是分離的,master複製資料庫的“寫”,slave則是只有“讀”的許可權。(這裡說的讀寫操作對象是master節點上的Redis資料庫),如果在slave上進行資料的寫操作,那麼資料只存在slave本地的資料庫中,也就是<在master上set資料,在slave上可以get到資料;在slave上set資料,在master上是get不到的>。可以說這種master--slave的形式部署是一種資料的單向樹狀傳輸圖。但是由於DWCS項目的資料是需要多對一的資料轉送——所有worker節點將解析出來的url彙集給master節點處理,而Redis是一對多的“master--slaves”模式,而且<一台slave無法串連多台master>. 所以使用“在Master節點上部署Redis伺服器,在worker節點上部署Redis的client,串連Master的Redis伺服器,進行多client-->master的用戶端群串連更新資料庫”。這樣做:
- 優點:在同一個Redis Server上進行每個worker節點client端資料的更新,快捷方便,簡單。
- 缺點:不安全,由於Redis是存在記憶體中的,運算速度快,方便Redis Server 密碼的暴力破解;多用戶端儲存資料容易發生誤操作或者資料被其他用戶端寫入相同的key值而被覆蓋的情況。
- 解決:設定密碼?在存入資料前先對資料進行加密?在存入資料前判斷是否key值重複,設定自動成長的key值避免重複?
2.Redis Server【Master節點上】的配置
- 目前支援Windows的Redis是非官方的微軟Redis版本(MSOpenTech/redis),下載解壓後,有以下檔案:
- 其中的redis.windows.conf便是需要更改的設定檔。開啟後:
- port 6379 表示其預設連接埠是6379
- 其中幾個常用到的配置更改項:port 、logfile 、 slaveof(配置主從複製用到)、 save、slave-read-only、requirepass(配置主從複製用到)、masterauth(配置主從複製用到)、...
- 修改完設定檔後儲存,DOS切換至Redis的目錄下,啟動Redis Server:
- 在DCWS中,只需要用到Master節點的Redis Server ,所以配置我只改了(因人而異),其他的都是預設值:
requirepass *******
3.Redis Client的配置【worker節點上】:
- 在worker節點的機子上進入DOS,切換至Redis的目錄運行client,串連遠程master節點伺服器上的server:
- -h 後接 master ip,-p 後接 連接埠 , -a 後接 串連密碼(就是requirepass 設定的密碼)
4.串連成功後:
server端:
client端:
Redis 3.0.501 學習使用(1)