百度定義:Redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對很多其它。包含string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。為了保證效率,數據都是緩存在內存中。
差別的是redis會周期性的把更新的數據寫入磁盤或者把改動操作寫入追加的記錄文件,而且在此基礎上實現了master-slave(主從)同步。
曾經公司一直在使用ehcache緩存。可是隨着業務增多和用戶訪問量的增多系統越來越不能滿足實際需求,反映也越來越慢,緩存它的處理訪問速度是讀取磁盤的上千倍,覺的利用緩存能夠解決系統反應慢的問題。因此打算搭建一個高性能的redis緩存server。讓緩存從應用server中脫離出來單獨搭建緩存server,假設系統依賴於這個緩存server那么就須要考慮server宕機情況的出現,須要弄一個緩存集群來避免這一狀況發生。
看到有一句經典的話描寫敘述宕機情況的發生而不讓用戶感覺到。相當於給 “飛行的飛機換一個引擎” 還要讓用戶絲毫感覺不到飛機晃動。也就是說不管后台怎么變出現啥狀況,對於用戶界面前台用戶體驗要好。
在系統優化方案中一般首先要考慮緩存。其次再考慮其它瓶頸,這也是系統優化經驗。
以下先看一下在兩台window平台電腦上搭建的redisserver。
Redis Linux和window集成最新版下載地址:http://pan.baidu.com/s/1dD1WmEd
結構圖例如以下

1.下載解壓。沒什么好說的,在解壓后的bin文件夾下有下面這些文件:

2.該server主要包含上面的文件。首先啟動server,啟動server時須要將redis.windows.confserver配置文件載入進行。能夠在命令行輸入例如以下命令(須要將該文件夾加到環境變量里面才起作用)。我把它寫在了一個bat腳本里面。直接點擊能夠啟動服務:

3.運行,看到例如以下界面表示已經啟動成功。

至此,這台電腦上redisserver已安裝好。IP地址為:192.168.24.82。默認port:6379;
反復步驟,再在還有一台電腦安一個server設置主從關系Master-slave:IP地址:192.168.24.39;port:6379
4.為了安全首先給server枷鎖,默認配置並沒有設置password不論什么一個用戶都能夠訪問這個server。改動redis.windows.conf配置文件改動password:找到例如以下行:
找到# requirepass foobared 去掉前面的凝視#。並把foobared 替換為你自己的password:lls
如今我們從本地ip為82的登錄server試試,從本機登錄輸入命令調用client程序並輸入password:

5. 參數分別為IP、port、password,假設不輸入密碼將提示沒有權限登錄系統。
從遠程登錄原理一樣僅僅只是輸入的IP地址不同而已,在本機往緩存里面設存儲值之后然后從還有一台電腦能夠取得該值。

這樣就能夠從隨意電腦和client訪問這台緩存server。這兩台server之間還須要設置主從關系完畢同步備份。
伸縮性考慮:
在緩存server集群中須要考慮server伸縮性即某一天緩存server不可以滿足需求時,動態加入一台或者降低一台server對於現有的集群影響最小。影響越小表明伸縮性越好,不只指緩存還有應用server集群、數據庫server集群等都須要考慮這一問題。
性能測試
自帶工具benchmark.exe,輸入命令:benchmark -h 192.168.24.82 -p 6379 -c 1000 -n 100000。表示向server發送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,如此就可以將結果輸出到文件里。
后一篇博客將介紹怎樣搭建主從server以及通過javaclient同server交互。
