標籤:style blog http ar color 使用 sp java strong
百度定義:Redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value類型相對更多,包括string(字串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(雜湊類型),為了保證效率,資料都是緩衝在記憶體中。
區別的是redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。
以前公司一直在使用ehcache緩衝,但是隨著業務增多和使用者訪問量的增多系統越來越不能滿足實際需求,反映也越來越慢,緩衝它的處理訪問速度是讀取磁碟的上千倍,覺的利用緩衝可以解決系統反應慢的問題。因此打算搭建一個高效能的redis快取服務器,讓緩衝從應用伺服器中脫離出來單獨搭建快取服務器,如果系統依賴於這個快取服務器那麼就需要考慮伺服器宕機情況的出現,需要弄一個緩衝叢集來避免這一狀況發生。
看到有一句經典的話描述宕機情況的發生而不讓使用者感覺到,相當於給 “飛行的飛機換一個引擎” 還要讓使用者絲毫感覺不到飛機晃動,也就是說無論後台怎麼變出現啥狀況,對於使用者介面前台使用者體驗要好。
在系統最佳化方案中一般首先要考慮緩衝,其次再考慮其他瓶頸,這也是系統最佳化經驗。
下面先看一下在兩台window平台電腦上搭建的redis伺服器。
Redis Linux和window整合最新版:http://pan.baidu.com/s/1dD1WmEd
結構圖如下
1.下載解壓,沒什麼好說的,在解壓後的bin目錄下有以下這些檔案:
2.該伺服器主要包括上面的檔案,首先啟動伺服器,啟動伺服器時需要將redis.windows.conf伺服器設定檔載入進行,可以在命令列輸入如下命令(需要將該目錄加到環境變數裡面才起作用),我把它寫在了一個bat指令碼裡面,直接點擊可以啟動服務:
3.執行,看到如下介面表示已經啟動成功。
至此,這台電腦上redis伺服器已安裝好,IP地址為:192.168.24.82;預設連接埠:6379;
重複步驟,再在另一台電腦安一個伺服器設定主從關係Master-slave:IP地址:192.168.24.39;連接埠:6379
4.為了安全首先給伺服器枷鎖,預設配置並沒有設定密碼任何一個使用者都可以訪問這個伺服器,修改redis.windows.conf設定檔修改密碼:找到如下行:
找到# requirepass foobared 去掉前面的注釋#,並把foobared 替換為你自己的密碼:lls
現在我們從本地ip為82的登入伺服器試試,從本機登入輸入命令調用用戶端程式並輸入密碼:
5. 參數分別為IP、port、password,如果不輸入密碼將提示沒有許可權登入系統。從遠程登入原理一樣只不過輸入的IP地址不同而已,在本機往緩衝裡面設儲存值之後然後從另一台電腦可以取得該值。
這樣就可以從任意電腦和用戶端訪問這台快取服務器,這兩台伺服器之間還需要設定主從關係完成同步備份。
伸縮性考慮:
在快取服務器叢集中需要考慮伺服器伸縮性即某一天快取服務器不能夠滿足需求時,動態添加一台或者減少一台伺服器對於現有的叢集影響最小,影響越小表明伸縮性越好,不僅僅指緩衝還有應用伺服器叢集、資料庫伺服器叢集等都需要考慮這一問題。
效能測試
內建工具benchmark.exe,輸入命令:benchmark -h 192.168.24.82 -p 6379 -c 1000 -n 100000。表示向伺服器發送10萬個請求,每次請求並發數為1000,結果如下:
====== PING_INLINE ======
100000 requests completed in 154.46 seconds
1000 parallel clients
3 bytes payload
keep alive: 1
647.43 requests per second
====== PING_INLINE ======
表示平均每秒處理647.43個並發請求,相當於每秒有60萬使用者請求,此電腦配置4G記憶體單核CUP,效能還是可以的。
PS:
在測試時大量的輸出資訊顯示在cmd控制台,會覆蓋以前的資訊,其實我們可以將結果輸出到txt檔案在命令的後面加上一個符號即可,拿我們熟悉的命令舉例:ipconfig all > D:text.txt,如此即可將結果輸出到檔案中。
後一篇部落格將介紹如何搭建主從伺服器以及通過java用戶端同伺服器互動。
Window平台搭建Redis分布式緩衝叢集 (一)伺服器搭建及效能測試