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服務,然後重新構造叢集環境