天天看點

redis 常用指令記錄以及redis 讀寫分離

Redis 常用指令:

    1: 傳回滿足的所有鍵 keys * (可以模糊比對 例: keys list*)

    2: 是否存在指定的key  exists

    3: expire 設定某個key的過期時間,可以使用ttl [key] 檢視剩餘時間

    4: persist 取消過期時間

    5: select  選擇資料庫 資料庫為0到15(一共16個資料庫)預設進入的是0資料庫

    6: move [key] [資料庫下标]目前資料庫中的key轉移到其他資料庫中

    7: randomkey 随機傳回資料庫裡的一個key

    8: rename 重命名key

    9: echo 列印指令

   10: dbsize 檢視資料庫的key的數量

   11: info擷取資料庫資訊

   12: config get 傳回相關redis的配置資訊

        cinfig get * 檢視所有配置資訊

   13: flushdb 清空目前資料庫,flushall 清空所有資料庫

redis 主從複制

       1: Master可以擁有多個slave

       2: 多個slave可以連接配接同一個Master外,還可以連結到其他的slave

       3: 主從複制不會阻塞master,在同步資料時 master可以繼續處理clinet請求

       4: 提供系統的伸縮性

主從複制過程:

       1:slave與master建立連結,發送sync同步指令

       2:master會開啟一個背景程序,将資料庫快照儲存到檔案中,同僚master主程序會開始收集新的寫指令并緩存

       3:背景完成儲存後,就将檔案發送到slave

       4:slave将此檔案儲存到硬碟上

主從複制配置:

       1:修改配置檔案:redis.config(主伺服器不用修改,隻修改從伺服器)

   第一步:slaveof <masterip> <mastport>

   第二步:masterauth <masterpassword>

如果從伺服器連接配接不上主伺服器 (Error condition on socket for SYNC: Connection reset by peer) 

1:确認防火牆問題

2:檢視主伺服器的redis.config  

    一、是否 bind ip(注釋掉)

    二、protected-mode yes  改為 no

可以使用info  檢視伺服器資訊

注:在使用的時候,直接使用一個執行個體即可,不用為沒一個從伺服器都進行執行個體,服務會自動進行負載。

redis 哨兵

    有了主從複制的實作以後,我們如果想對主從伺服器進行監控,那麼在redis2.6以後提供了一個“哨兵”的機制,在2.6版本中的哨兵為1.0版本,并不穩定,會出現各種各樣的問題。在2.8以後的版本哨兵功能才穩定起來。

顧名思義 ,哨兵的含義就是監控Redis系統的運作狀況,其主要功能有兩點:

    1:監控主資料庫和從資料庫是否正常運作。

    2: 住資料庫出現故障時,可以自動将從資料庫轉換為主資料庫,實作自動切換。

實作步驟:

    1:修改sentinel.conf:

sentinel monitor 哨兵名稱 主資料庫ip 主資料庫端口 投票選舉次數

sentinel down-after-milliseconds 哨兵名稱 5000 這裡配置逾時5000毫秒為當機

        sentinel failover-timeout 哨兵名稱 90000

        sentinel parallel-syncs 哨兵名稱 2

        sentinel can-failover mymaster yes

    2: 啟動sentinel 哨兵

**redis-server **sentinel.conf --sentinel &

    3 檢視哨兵相關資訊名稱

**/redis-cli -h ip位址 -p 26379 info Sentinel

注:哨兵模式在主redis,閃斷閃連(例如由于網絡原因導緻,極短時間内的網絡連接配接失敗)的情況下會出現資料丢失

redis叢集的搭建

  叢集搭建:至少要三個master(在這裡我是在同一台電腦,開啟不同端口的方式建立叢集)

第一步:

建立一個檔案夾redis-cluster,然後在其下面分别建立6個檔案夾如下

1:mkdir -p /usr/local/redis-cluster

        2: mkdir 7001,mkdir 7002,mkdir 7003,mkdir 7004,mkdir 7005,mkdir 7006

第二步:

把之前的redis.conf配置檔案分别copy到 700* 下,進行修改各個檔案内容,也就是對 700*下的沒一個copy的redis.conf檔案進行修改!

        1:daemonize yes  改為背景啟東

        2:port 700* 修改端口

        3:bind 192.168.142.128  綁定目前機器的ip位址

        4:dir "/usr/local/redis-cluster/7001/" 指定資料檔案夾存放位置,必須要指定不同的目錄位置,不然會丢失資料)

        5:cluster-enabled yes (啟動叢集模式)

6:cluster-config-file nodes-700*.conf (這裡700*最好和port對應上)

7:cluster-node-timeout 5000

        8:appendonly yes   (開啟aof備份模式)

第三步:

把修改後的配置檔案,分别 cipy到各個檔案夾下,注意每個檔案要修改端口号,并且nodes檔案也要不相同!

第四部:

由于redis叢集需要使用ruby指令,是以我們需要安裝ruby

1:yum install ruby

2:yum install rubygems

3:gem install redis  (安裝redis和ruby 的接口)

第五步:

1:啟動所有的redis

第六步:

1:./redis-3.2.8/src/redis-trib.rb create --replicas 1 192.168.142.128:7001 192.168.142.128:7002 192.168.142.128:7003 192.168.142.128:7004 192.168.142.128:7005 192.168.142.128:7006

開啟成功進行測試:

連接配接任意一個節電:  /usr/local/redis/bin/redis-cli -c -h 192.168.142.128 -p  700*

2:進行驗證:cluster info(檢視叢集資訊)、cluster nodes(檢視節點清單)

3:進行資料操作驗證

4:關閉叢集則需要逐個進行關閉,使用指令

        /usr/local/redis/bin/redis-cli -c -h 192.168.142.128 -p 700* shutdown

注:當出現叢集無法啟動時,删除臨時的資料庫檔案,再次重新啟動每個redis服務,然後重新構造叢集環境

繼續閱讀