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

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/woshimike/article/details/56011227



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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章