【Redis】配置redis主從複製

閱讀目錄


簡單介紹

redis的做用,可網上自行搜索,下面將介紹redis的主從複製。
配置redis主從IP和port:
master and slave ip port
master 127.0.0.1 6379
slave1 127.0.0.1
6380
slave2 127.0.0.1
6381

1、下載安裝

  • 下載文件:
     
     
     
     
wget http://download.redis.io/releases/redis-3.2.1.tar.gz


  • 解壓縮:
    
    
    
    
tar zxvf redis-3.2.1.tar.gzmv redis-3.2.1 redis-3.2.1.mastertar zxvf redis-3.2.1.tar.gzmv redis-3.2.1 redis-3.2.1.slave-1tar zxvf redis-3.2.1.tar.gzmv redis-3.2.1 redis-3.2.1.slave-2


  • 執行make和make test
分別進入文件夾: redis - 3.2 . 1.master、 redis - 3.2 . 1.slave-1和 redis - 3.2 . 1.slave的src目錄,執行命令:
     
     
     
     
cd redis-3.2.1.master/srcmake make test//其餘兩個目錄執行相同的操做
執行成功後會提示:

2、修改配置文件:redis.conf

配置文件位於:(須要修改3個配置文件)

主要修改4個參數:
  1. port;
  2. logfile;
  3. slaveof;
  4. pidfile;
  5. daemonize(配置以daemon方式運行)

  • 修改master文件:redis.conf:
配置文件的其餘部分不要改動,修改以下內容:
      
      
      
      
port 6379pidfile /var/run/redis_6379.pid# slaveof <masterip> <masterport>logfile "/data/logs/redis.master.log"daemonize yes

  • 修改slave1的配置文件:
        
        
        
        
port 6380pidfile /var/run/redis_6380.pidslaveof 127.0.0.1 6379logfile "/data/logs/redis.slave1.log"daemonize yes

  • 修改slave2的配置文件:
       
       
       
       
port 6381pidfile /var/run/redis_6381.pidslaveof 127.0.0.1 6379logfile "/data/logs/redis.slave-6381.log"daemonize yes


3、開啓master和slave一、slave2

  • 開啓master (salve的開啓方式與此相似)
轉到目錄:redis-3.2.1.master 下(slave則轉到相應的目錄),執行:
     
     
     
     
./src/redis-server redis.conf
運行成功後,查看logfile能夠看到以下界面:

  • 開啓slave1
能夠看到slave1開啓的狀況,以下圖:
同時看到master的日誌以下:


  • 開啓slave2
能夠看到slave2開啓的狀況,以下圖:
同時看到master的日誌以下:

  • 查看運行狀況


4、客戶端鏈接-測試同步

  • 鏈接master客戶端,並建立數據
     
     
     
     
redis-cli -h 127.0.0.1 -p 6379


  • 鏈接slave,並查看數據同步狀況:

下面是另外一個slave:


Slave不能夠寫,只能夠讀

當鏈接上redis的slave時,只能夠讀數據,不能夠寫數據:


5、應用場景

  • 取最新N個數據的操做

好比典型的取你網站的最新文章,經過下面方式,咱們能夠將最新的5000條評論的ID放在Redis的List集合中,並將超出集合部分從數據庫獲取
使用LPUSH latest.comments<ID>命令,向list集合中插入數據
插入完成後再用LTRIM latest.comments 0 5000命令使其永遠只保存最近5000個ID
而後咱們在客戶端獲取某一頁評論時能夠用下面的邏輯(僞代碼)
      
      
      
      
FUNCTION get_latest_comments(start,num_items):   id_list = redis.lrange("latest.comments",start,start+num_items-1)   IF id_list.length < num_items   id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")   ENDRETURN id_listEND
若是你還有不一樣的篩選維度,好比某個分類的最新N條,那麼你能夠再建一個按此分類的List,只存ID的話,Redis是很是高效的

  • 排行榜應用,取TOP N操做

這個需求與上面需求的不一樣之處在於,前面操做以時間爲權重,這個是以某個條件爲權重,好比按頂的次數排序,這時候就須要咱們的sorted set出馬了,將你要排序的值設置成sorted set的score,將具體的數據設置成相應的value,每次只須要執行一條ZADD命令便可。

  • 須要精準設定過時時間的應用

好比你能夠把上面說到的sorted set的score值設置成過時時間的時間戳,那麼就能夠簡單地經過過時時間排序,定時清除過時數據了,不只是清除Redis中的過時數據,你徹底能夠把Redis裏這個過時時間當成是對數據庫中數據的索引,用Redis來找出哪些數據須要過時刪除,而後再精準地從數據庫中刪除相應的記錄。

  • 計數器應用

Redis的命令都是原子性的,你能夠輕鬆地利用INCR,DECR命令來構建計數器系統。

  • Uniq操做,獲取某段時間全部數據排重值

這個使用Redis的set數據結構最合適了,只須要不斷地將數據往set中扔就好了,set意爲集合,因此會自動排重。

  • Pub/Sub構建實時消息系統

Redis的Pub/Sub系統能夠構建實時的消息系統,好比不少用Pub/Sub構建的實時聊天系統的例子。

  • 構建隊列系統

使用list能夠構建隊列系統,使用sorted set甚至能夠構建有優先級的隊列系統。

  • 緩存



6、參考連接

《Windows下Redis Sentinel部署》 http://bbs.redis.cn/forum.php?mod=viewthread&tid=715 





相關文章
相關標籤/搜索