標籤:
1.1.1redis簡介
Redis 是一個開源的使用 ANSI C 語言編寫、支援網路、可基於記憶體亦可持久化的日誌 型、 Key-Value資料庫
1.1.2redis常見使用情境
1.會話緩衝(Session Cache)
 
最常用的一種使用Redis的情景是會話緩衝(session cache)。用Redis緩衝會話比其他儲存(如Memcached)的優勢在於:Redis提供持久化。當維護一個不是嚴格要求一致性的緩衝時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?
 
幸運的是,隨著 Redis 這些年的改進,很容易找到怎麼恰當的使用Redis來緩衝會話的文檔。甚至廣為人知的商業平台Magento也提供Redis的外掛程式。
 
2.全頁緩衝(FPC)
 
除基本的會話token之外,Redis還提供很簡便的FPC平台。回到一致性問題,即使重啟了Redis執行個體,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是一個極大改進,類似PHP本地FPC。
 
再次以Magento為例,Magento提供一個外掛程式來使用Redis作為全頁緩衝後端。
 
此外,對WordPress的使用者來說,Pantheon有一個非常好的外掛程式  wp-redis,這個外掛程式能協助你以最快速度載入你曾瀏覽過的頁面。
 
3.隊列
 
Reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得Redis能作為一個很好的訊息佇列平台來使用。Redis作為隊列使用的操作,就類似於本地程式語言(如Python)對 list 的 push/pop 操作。
 
如果你快速的在Google中搜尋“Redis queues”,你馬上就能找到大量的開源項目,這些項目的目的就是利用Redis建立非常好的後端工具,以滿足各種隊列需求。例如,Celery有一個後台就是使用Redis作為broker,你可以從這裡去查看。
 
 
 
 
 1.1.4 redis版本
   redis版本:2.8.6
   作業系統centos6.5
2.0.0 單機模式安裝2.1.1軟體下載
wget http://download.redis.io/releases/redis-2.8.6.tar.gz
2.1.2安裝指令碼
以上每台機器分別按照單機版安裝redis執行指令碼redis_install.sh
指令碼如下
 
#!/bin/bashyum -y install gcc make tcl;cp redis-2.8.6.tar.gz /usr/local/redis-2.8.6.tar.gz;cd /usr/local/;tar -xvf redis-2.8.6.tar.gz;cd redis-2.8.6;make;make test;mkdir  -p  /bestpayserver/data/redis;mkdir  -p  /bestpayserver/log/;sed -i ‘s/^daemonize no/daemonize yes/g‘  redis.confsed -i ‘s/^port 6379/port 16379/g‘ redis.confsed -i ‘s/^logfile ""/logfile \/bestpayserver\/log\/redis.log/g‘ redis.confsed -i ‘s/^dir .\//dir \/bestpayserver\/data\/redis/g‘ redis.conf
  
 
 
2.1.3 軟體啟動
   # cd  /usr/local/redis-2.8.6/src   # ./redis-server  /usr/local/redis-2.8.6/redis.conf
  
2.1.4 查看redis進程
# ps -aux |grep redisWarning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQroot     14134  0.0  0.9 137348  9544 ?        Ssl  10:18   0:18 ./redis-server *:16379                         root     25042  0.0  0.0 103256   828 pts/0    S+   20:35   0:00 grep redis
  
 
2.1.5 命令測試
         進入用戶端:
         # cd  /usr/local/redis-2.8.6/src         # ./redis-cli –p 16379         set 測試         redis 127.0.0.1:16379> set hello world         OK <---成功         get 測試         redis 127.0.0.1:16379> get hello         "world" <---成功
  
 
2.2 叢集監控搭建2.2.1. 機器準備
   主master:192.168.161.233
   從1slave:192.168.161.234
   從2slave:192.168.161.235
   監控機sentinel:192.168.161.236
 
2.2.2拓撲圖
2.2.3 slave 配置
# cd  /usr/local/redis-2.8.6# echo "slaveof 192.168.161.233 16379" >> redis.conf
  
Master上查看叢集狀態
[[email protected] src]# ./redis-cli -h 192.168.161.233 -p 16379 info Replicatio
Slave上查看叢集狀態
[[email protected] src]# ./redis-cli -h 192.168.161.235 -p 16379 info Replication
2.2.4sentinel監控機配置
# cd  /usr/local/redis-2.8.6# vim sentinel.conf
  
修改一下配置
sentinel monitor mymaster  192.168.161.233  16379  1
  
其中mymaster為自訂的master名稱,後面為master的IP,連接埠號碼,最後面的1表示有一個sentinel監控。
   Redis主從系統,除了做資料冗餘,開可以做高可用性災備。Reids提供了Sentinel工具來監控各Master的狀態,如果Master異常,則會做主從切換,將slave作為master,將master作為slave。主從切換之後,master_redis.conf、slave_redis.conf和sentinel.conf的內容都會發生改變。master_redis.conf中會多了一句slaveof的配置,sentinel.conf的監控目標也隨之調換,這一點要注意。
啟動監控機:
#./redis-server /usr/local/redis-2.8.6/sentinel.conf --sentinel &
效果如下:
在master上查看監控狀態
# ./redis-cli -h 192.168.161.236 -p 26379 info Sentinel
  
效果如下:
 
在master  用redis客戶斷 上查看監控機上 slave狀態  
# ./redis-cli -h 192.168.161.236 -p 26379  sentinel slaves mymaster
3.0.0總結3.0.1 主要功能
Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案,當用Redis做Master-slave的高可用方案時,假如master宕機了,Redis本身(包括它的很多用戶端)都沒有實現自動進行主備切換,而Redis-sentinel本身也是一個獨立啟動並執行進程,它能監控多個master-slave叢集,發現master宕機後能進行自懂切換。
它的主要功能有以下幾點
不時地監控redis是否按照預期良好地運行;
如果發現某個redis節點運行出現狀況,能夠通知另外一個進程(例如它的用戶端);
能夠進行自動切換。當一個master節點不可用時,能夠選舉出master的多個slave(如果有超過一個slave的話)中的一個來作為新的master,其它的slave節點會將它所追隨的master的地址改為被提升為master的slave的新地址
 
3.0.2 Sentinel支援叢集
很顯然,只使用單個sentinel進程來監控redis叢集是不可靠的,當sentinel進程宕掉後(sentinel本身也有單點問題,single-point-of-failure)整個叢集系統將無法按照預期的方式運行。所以有必要將sentinel叢集,這樣有幾個好處:
即使有一些sentinel進程宕掉了,依然可以進行redis叢集的主備切換;
如果只有一個sentinel進程,如果這個進程運行出錯,或者是網路堵塞,那麼將無法實現redis叢集的主備切換(單點問題);
如果有多個sentinel,redis的用戶端可以隨意地串連任意一個sentinel來獲得關於redis叢集中的資訊。
 
Redis叢集部署