欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          基礎(chǔ)詳解之Redis的使用

          本篇文章給大家?guī)?lái)了關(guān)于Redis的相關(guān)知識(shí),其中主要介紹了關(guān)于redis的一些基礎(chǔ)知識(shí),redis是內(nèi)存性數(shù)據(jù)庫(kù),斷電,數(shù)據(jù)丟失,進(jìn)程重啟,數(shù)據(jù)丟失,下面一起來(lái)看一下,希望對(duì)大家有幫助。

          基礎(chǔ)詳解之Redis的使用

          推薦學(xué)習(xí):Redis視頻教程

          Redis

          1.基礎(chǔ)知識(shí)

          redis是內(nèi)存性數(shù)據(jù)庫(kù),斷電,數(shù)據(jù)丟失,進(jìn)程重啟,數(shù)據(jù)丟失

          需要配置redis的數(shù)據(jù)持久化,防止數(shù)據(jù)丟失

          redis支持ms復(fù)制,讀寫分離,防止單點(diǎn)故障,數(shù)據(jù)丟失

          1.1.安裝

          • rpm包安裝

          • yum自動(dòng)化安裝,在阿里的yum倉(cāng)庫(kù)中,有redis的軟件包

            yum install redis -y
          • 源代碼編譯安裝

            # 1.下載redis源碼 wget http://download.redis.io/releases/redis-4.0.10.tar.gz # 2.解壓縮 tar -zxf redis-4.0.10.tar.gz # 3.切換redis源碼目錄 cd redis-4.0.10.tar.gz # 4.編譯源文件 make  # 5.編譯好后,src/目錄下有編譯好的redis指令 # 6.make install 安裝到指定目錄,默認(rèn)在/usr/local/bin make install DESTDIR=/your/dir

          1.2.配置文件

          修改redis.conf,更改默認(rèn)端口,設(shè)置密碼,開(kāi)啟安全模式等操作
          用yum安裝的redis,默認(rèn)配置文件在/etc/redis.conf

          • 配置文件參數(shù)解釋

            # vim /etc/redis.conf #打開(kāi)如下參數(shù)即可# 這里是綁定redis的啟動(dòng)地址,如果你支持遠(yuǎn)程連接,就改為0.0.0.0bind 0.0.0.0  #更改端口port 6500#設(shè)置redis的密碼requirepass haohaio#默認(rèn)打開(kāi)了安全模式protected-mode yes   #打開(kāi)一個(gè)redis后臺(tái)運(yùn)行的參數(shù)daemonize yes

          1.3.啟動(dòng)Redis

          # 為什么使用systemctl start redis無(wú)法連接呢? # 是因?yàn)檫@個(gè)命令默認(rèn)連接的是6379端口,我們更改了redis端口,因此無(wú)法連接了  # 請(qǐng)使用如下的命令,指定配置文件啟動(dòng) [root@s25linux opt]# redis-server /etc/redis.conf
          • 檢查進(jìn)程狀態(tài)

            #檢查redis的進(jìn)程 [root@s25linux opt]# ps -ef|grep redis root       6498      1  0 11:42 ?        00:00:00 redis-server 0.0.0.0:6500

          1.4.啟動(dòng)Redis客戶端連接服務(wù)端

          # 連接redis服務(wù)端,指定ip地址和端口,以及密碼連接redis # -p 指定端口 # -h 指定ip地址 # auth指令,用于密碼驗(yàn)證 [root@s25linux opt]# redis-cli -p 6500 -h 192.168.178.143 192.168.178.143:6500> ping (error) NOAUTH Authentication required. 192.168.178.143:6500> auth  haohaio OK 192.168.178.143:6500> ping PONG

          1.5.常用命令

          1.keys *  列出redis所有的key 2.type key      查看key類型 3.expire key seconds    過(guò)期時(shí)間 4.ttl key     查看key過(guò)期剩余時(shí)間        -2表示key已經(jīng)不存在了 5.persist     取消key的過(guò)期時(shí)間   -1表示key存在,沒(méi)有過(guò)期時(shí)間 6.exists key     判斷key存在    存在返回1    否則0 7.del keys     刪除key    可以刪除多個(gè) 8.dbsize         計(jì)算key的數(shù)量

          2.RDB持久化

          redis提供了RDB持久化的功能,這個(gè)功能可以將redis在內(nèi)存中的的狀態(tài)保存到硬盤中,它可以手動(dòng)執(zhí)行。

          也可以再redis.conf中配置,定期執(zhí)行

          RDB持久化產(chǎn)生的RDB文件是一個(gè)經(jīng)過(guò)壓縮二進(jìn)制文件,這個(gè)文件被保存在硬盤中,redis可以通過(guò)這個(gè)文件還原數(shù)據(jù)庫(kù)當(dāng)時(shí)的狀態(tài)。

          1. 配置rdb機(jī)制的數(shù)據(jù)持久化,數(shù)據(jù)文件是一個(gè)看不懂的二進(jìn)制文件,且配置觸發(fā)的時(shí)間機(jī)制

            vim s25_rdb_redis.conf ,寫入如下內(nèi)容

            daemonize yes		#后臺(tái)運(yùn)行 port 6379			#端口  logfile /data/6379/redis.log #指定redis的運(yùn)行日志,存儲(chǔ)位置 dir /data/6379		#指定redis的數(shù)據(jù)文件,存放路徑  dbfilename  s25_dump.rdb	#指定數(shù)據(jù)持久化的文件名字  bind 127.0.0.1		#指定redis的運(yùn)行ip地址 #redis觸發(fā)save指令,用于數(shù)據(jù)持久化的時(shí)間機(jī)制   # 900秒之內(nèi)有1個(gè)修改的命令操作,如set .mset,del save 900 1		 # 在300秒內(nèi)有10個(gè)修改類的操作 save 300 10 # 60秒內(nèi)有10000個(gè)修改類的操作 save 60  10000
          2. 創(chuàng)建redis的數(shù)據(jù)文件夾,

            mkdir -p /data/6379
          3. 殺死之前所有的redis,防止擾亂實(shí)驗(yàn)

            [root@s25linux s25redis]# pkill -9 redis
          4. 指定配置了rdb的redis配置文件,啟動(dòng)

            redis-server s25_rdb_redis.conf
          5. 如果沒(méi)有觸發(fā)redis的持久化時(shí)間機(jī)制,數(shù)據(jù)文件是不會(huì)生成的,數(shù)據(jù)重啟進(jìn)程也會(huì)丟

          6. 可以通過(guò)編寫腳本,讓redis手動(dòng)執(zhí)行save命令,觸發(fā)持久化,在redis命令行中,直接輸入save即可觸發(fā)持久化

            127.0.0.1:6379> set addr shahe OK 127.0.0.1:6379>	 127.0.0.1:6379> set  age 18 OK 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> keys * 1) "age" 2) "addr" 3) "name" 127.0.0.1:6379> save OK
          7. 存在了rdb持久化的文件之后,重啟redis進(jìn)程,數(shù)據(jù)也不會(huì)丟了,redis在重啟之后,會(huì)讀取dump.rdb文件中的數(shù)據(jù)

            rdb的弊端在于什么,如果沒(méi)有觸發(fā)持久化機(jī)制,就發(fā)生了機(jī)器宕機(jī),數(shù)據(jù)就會(huì)丟失了,因此redis有一個(gè)更好的aof機(jī)制

          3.AOF持久化

          AOF(append-only log file)
          記錄服務(wù)器執(zhí)行的所有變更操作命令(例如set del等),并在服務(wù)器啟動(dòng)時(shí),通過(guò)重新執(zhí)行這些命令來(lái)還原數(shù)據(jù)集
          AOF 文件中的命令全部以redis協(xié)議的格式保存,新命令追加到文件末尾。
          優(yōu)點(diǎn):最大程度保證數(shù)據(jù)不丟
          缺點(diǎn):日志記錄非常大

          redis-client   寫入數(shù)據(jù)  >  redis-server   同步命令   >  AOF文件
          1. 新建配置文件,配置以下參數(shù)。

            vim  s25_aof_redis.conf   AOF持久化配置,兩條參數(shù)  appendonly yes appendfsync  always    總是修改類的操作              everysec   每秒做一次持久化              no     依賴于系統(tǒng)自帶的緩存大小機(jī)制
          2. 例如參數(shù)配置為

            daemonize yes port 6379logfile /data/6379aof/redis.logdir /data/6379dbfilename  dbmp.rdb requirepass redhat save 900 1save 300 10save 60  10000appendonly yes appendfsync everysec
          3. 創(chuàng)建aof的數(shù)據(jù)文件夾

            mkdir -p /data/6379aof
          4. 啟動(dòng)aof的Redis數(shù)據(jù)庫(kù)

            redis-server  s25_aof_redis.conf
          5. aof機(jī)制的數(shù)據(jù)庫(kù),在首次啟動(dòng)的時(shí)候,就會(huì)生成aof數(shù)據(jù)文件了,如下

            [root@s25linux 6379aof]# lsappendonly.aof  redis.log

          到此已經(jīng)配置結(jié)束,以下為實(shí)驗(yàn)步驟

          1. 登錄redis,寫入數(shù)據(jù)

            [root@s25linux s25redis]# redis-cli127.0.0.1:6379>127.0.0.1:6379>127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379> set  name zhunbeixiakechifan OK127.0.0.1:6379> set  name2  xinkudajiale OK127.0.0.1:6379> keys *1) "name2"2) "name"
          2. 寫入的操作,會(huì)被記錄到aof文件日志中

          3. 殺死所有的redis進(jìn)程,且重啟

            [root@s25linux s25redis]# pkill -9 redis[root@s25linux s25redis]# redis-server s25_aof_redis.conf
          4. redis的aof持久化機(jī)制,是在重啟的時(shí)候,redis重新執(zhí)行一遍aof文件中的命令,實(shí)現(xiàn)數(shù)據(jù)復(fù)現(xiàn)

          5. 如果該aof日志文件被刪除,數(shù)據(jù)也就無(wú)法恢復(fù)了

          4.一主一從數(shù)據(jù)同步復(fù)制

          4.1.說(shuō)明

          上午的最后一步,演示的是,當(dāng)我們刪除aof文件,或者是rdb,aof文件異常損壞,丟失,數(shù)據(jù)不也沒(méi)了嗎?

          在一臺(tái)機(jī)器上運(yùn)行2個(gè)及以上的redis,是redis支持多實(shí)例的功能,基于端口號(hào)的不同,就能夠運(yùn)行多個(gè)相互獨(dú)立的redis數(shù)據(jù)庫(kù)

          什么是多實(shí)例 就是機(jī)器上運(yùn)行了多個(gè)redis相互獨(dú)立的進(jìn)程 互不干擾的獨(dú)立的數(shù)據(jù)庫(kù) 叫做多個(gè)redis數(shù)據(jù)庫(kù)的實(shí)例,基于配置文件區(qū)分即可

          如圖是redis的多實(shí)例功能,且配置主從同步的圖

          基礎(chǔ)詳解之Redis的使用

          4.2.配置步驟

          1. 準(zhǔn)備好2個(gè)redis的配置文件,分別寫入如下內(nèi)容

            • vim s25-master-redis.conf

              port 6379  # 端口 daemonize yes  # 后臺(tái)運(yùn)行 pidfile /s25/6379/redis.pid  #  loglevel notice logfile "/s25/6379/redis.log"  # 日志存放目錄 dbfilename dump.rdb  # 持久化文件名 dir /s25/6379  # 數(shù)據(jù)文件保存的路徑 protected-mode no  # 打開(kāi)安全模式
            • vim s25-slave-redis.conf

              port 6389 daemonize yes pidfile /s25/6389/redis.pid loglevel notice logfile "/s25/6389/redis.log" dbfilename dump.rdb dir /s25/6389 protected-mode no # 可以直接在配置文件中,定義好復(fù)制關(guān)系,啟動(dòng)后,立即就會(huì)建立復(fù)制 slaveof  127.0.0.1  6379
          2. 分別生成2個(gè)redis的數(shù)據(jù)文件夾

            mkdir -p /s25/{6379,6389}
          3. 分別啟動(dòng)2個(gè)redis數(shù)據(jù)庫(kù)。

            [root@s25linux s25redis]# redis-server s25-master-redis.conf [root@s25linux s25redis]# [root@s25linux s25redis]# [root@s25linux s25redis]# redis-server s25-slave-redis.conf
          4. 分別檢查他們的進(jìn)程,以及復(fù)制關(guān)系

            [root@s25linux s25redis]# redis-cli -p 6379  info replication [root@s25linux s25redis]# redis-cli -p 6389  info replication # 通過(guò)一條命令,配置他們的復(fù)制關(guān)系,注意,這個(gè)命令只是臨時(shí)配置redis的復(fù)制關(guān)系, # 想要永久修改,還得修改配置文件 redis-cli -p  6389  slaveof  127.0.0.1 6379
          5. 配置完畢說(shuō)明

            此時(shí) 6379 ==== 主庫(kù) 6389 ==== 從庫(kù) 此時(shí)可以向6379中寫入數(shù)據(jù),能夠同步到6389中 6389是一個(gè)只讀的數(shù)據(jù)庫(kù),無(wú)法寫入數(shù)據(jù)

          5.一主多從及主從復(fù)制故障切換

          5.1.一主多從配置

          1. 再創(chuàng)建一個(gè)配置文件,port是6399,且加入到一主一從的復(fù)制關(guān)系中去

            # vim  s25-salve2-redis.conf port 6399daemonize yes pidfile /s25/6399/redis.pid loglevel notice logfile "/s25/6399/redis.log"dbfilename dump.rdbdir /s25/6399protected-mode no slaveof  127.0.0.1  6379
          2. 創(chuàng)建數(shù)據(jù)文件夾

            mkdir -p /s25/6399
          3. 此時(shí)可以啟動(dòng)6399的數(shù)據(jù)庫(kù),查看他的身份復(fù)制關(guān)系

            [root@s25linux s25redis]# redis-cli -p 6399 info replication

          5.2.故障切換

          • 故障模擬

            基礎(chǔ)詳解之Redis的使用

          1. 環(huán)境準(zhǔn)備,準(zhǔn)備3個(gè)redis的數(shù)據(jù)庫(kù)實(shí)例,分別是 6379(主)、6389(從1)、6399(從2),配置好一主兩從的關(guān)系

            [root@s25linux s25redis]# ps -ef|grep redis root      11294      1  0 15:19 ?        00:00:01 redis-server *:6379 root      11310      1  0 15:19 ?        00:00:01 redis-server *:6389 root      11620      1  0 15:33 ?        00:00:00 redis-server *:6399
          2. 分別查看復(fù)制關(guān)系

            [root@s25linux s25redis]# redis-cli -p 6379 info replication # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6389,state=online,offset=1883,lag=1 slave1:ip=127.0.0.1,port=6399,state=online,offset=1883,lag=1
          3. 此時(shí)模擬故障,直接kill掉主庫(kù)

            kill -9 11294
          4. 此時(shí)留下2個(gè)孤零零的從庫(kù),沒(méi)有了主人,還沒(méi)發(fā)寫入數(shù)據(jù),很難受

            此時(shí)一位從庫(kù)(6399),不樂(lè)意了,翻身農(nóng)奴做主人,去掉自己的從庫(kù)身份,

            沒(méi)有這個(gè)從庫(kù)的枷鎖,我就是我自己的主人

            [root@s25linux s25redis]# redis-cli -p 6399  slaveof no one
          5. 此時(shí)6399已然是主庫(kù)了,修改6389的復(fù)制信息,改為6399即可

            [root@s25linux s25redis]# redis-cli -p 6389  slaveof  127.0.0.1 6399
          6. 此時(shí)檢查他們的復(fù)制關(guān)系

            [root@s25linux s25redis]# redis-cli -p 6389 info replication[root@s25linux s25redis]# redis-cli -p 6399 info replication
          7. 此時(shí)可以向主庫(kù)6399寫入數(shù)據(jù),6389查看數(shù)據(jù)即可

          主庫(kù)不掛,從庫(kù)掛掉的場(chǎng)景

          從庫(kù)掛掉,無(wú)所謂,重新再建立一個(gè)從庫(kù),加入主從復(fù)制即可,。,。

          你會(huì)發(fā)現(xiàn),如此的手動(dòng)切換復(fù)制關(guān)系,其實(shí)是很難受的,如果在夜里凌晨四點(diǎn),redis主庫(kù)突然掛了,你該怎么辦?你媳婦愿意讓你起來(lái)干活嗎?

          因此你該咋辦?是不是得學(xué)點(diǎn)別的技術(shù)?你希望有什么東西能幫你不?

          • 有錢,你搞一個(gè)賈維斯
          • 希望有一個(gè)人,能24h幫你盯著這個(gè)主從復(fù)制,發(fā)現(xiàn)主庫(kù)宕機(jī)之后,自動(dòng)的幫你進(jìn)行主從切換

          6.高可用哨兵 sentinel

          6.1.工作原理

          配置好redis的哨兵進(jìn)程,一般都是使用3個(gè)哨兵(保安) 哨兵的作用是盯著redis主庫(kù),不斷詢問(wèn)它是否存活,如果超過(guò)30s(設(shè)置的時(shí)間閾值)都沒(méi)有回應(yīng),3個(gè)哨兵會(huì)判斷主庫(kù)宕機(jī),談話進(jìn)行投票機(jī)制, 因?yàn)?個(gè)哨兵,要自動(dòng)的去選擇從庫(kù)為新的主庫(kù),每個(gè)哨兵的意見(jiàn)可能不一樣,因此引出投票機(jī)制,少數(shù)服從多數(shù)。 當(dāng)多個(gè)哨兵達(dá)成一致,選擇某一個(gè)從庫(kù)階段,自動(dòng)的修改他們的配置文件,切換新的主庫(kù) 此時(shí)如果宕機(jī)的主庫(kù),恢復(fù)后,哨兵也會(huì)自動(dòng)將其加入集群,且自動(dòng)分配為新的從庫(kù) 這一些都是自動(dòng)化,無(wú)需人為干預(yù),賊牛屁

          6.2.架構(gòu)

          基礎(chǔ)詳解之Redis的使用

          6.3.Redis配置

          1. 準(zhǔn)備3個(gè)redis節(jié)點(diǎn),1主2從的redis集群

            # redis支持多實(shí)例-------基于多個(gè)配置文件,運(yùn)行處多個(gè)redis相互獨(dú)立的進(jìn)程  s25-redis-6379.conf    -----主  port 6379 daemonize yes logfile "6379.log" dbfilename "dump-6379.rdb" dir "/var/redis/data/"    s25-redis-6380.conf------從1 port 6380 daemonize yes logfile "6380.log" dbfilename "dump-6380.rdb" dir "/var/redis/data/"  slaveof 127.0.0.1 6379   s25-redis-6381.conf-----從2 port 6381 daemonize yes logfile "6381.log" dbfilename "dump-6381.rdb" dir "/var/redis/data/"  slaveof 127.0.0.1 6379  # 查看3個(gè)配置文件,準(zhǔn)備分別啟動(dòng)該進(jìn)程 [root@s25linux s25sentinel]# ls s25-redis-6379.conf  s25-redis-6380.conf  s25-redis-6381.conf
          2. 創(chuàng)建數(shù)據(jù)存儲(chǔ)文件夾

            mkdir /etc/redis/data
          3. 分別啟動(dòng)3個(gè)進(jìn)程后,檢查進(jìn)程情況

            [root@s25linux s25sentinel]# redis-server s25-redis-6379.conf [root@s25linux s25sentinel]# redis-server s25-redis-6380.conf [root@s25linux s25sentinel]# redis-server s25-redis-6381.conf [root@s25linux s25sentinel]# ps -ef|grep redis root      20413      1  0 08:45 ?        00:00:00 redis-server *:6379 root      20417      1  0 08:45 ?        00:00:00 redis-server *:6380 root      20422      1  0 08:45 ?        00:00:00 redis-server *:6381
          4. 確定3個(gè)庫(kù)的主從關(guān)系

            [root@s25linux s25sentinel]# redis-cli -p 6379 info  replication # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6380,state=online,offset=183,lag=1 slave1:ip=127.0.0.1,port=6381,state=online,offset=183,lag=1

          6.4.sentinel 配置

          1. 分別準(zhǔn)備3個(gè)哨兵的配置文件,修改如下,三個(gè)哨兵的配置文件,僅僅是端口號(hào)的不同

            # vim s25-sentinel-26379.conf  port 26379   dir /var/redis/data/ logfile "26379.log" // 當(dāng)前Sentinel節(jié)點(diǎn)監(jiān)控 192.168.119.10:6379 這個(gè)主節(jié)點(diǎn) // 2代表判斷主節(jié)點(diǎn)失敗至少需要2個(gè)Sentinel節(jié)點(diǎn)節(jié)點(diǎn)同意 // mymaster是主節(jié)點(diǎn)的別名 sentinel monitor mymaster 127.0.0.1 6379 2 // 每個(gè)Sentinel節(jié)點(diǎn)都要定期PING命令來(lái)判斷Redis數(shù)據(jù)節(jié)點(diǎn)和其余Sentinel節(jié)點(diǎn)是否可達(dá), // 如果超過(guò)30000毫秒30s且沒(méi)有回復(fù),則判定不可達(dá) sentinel down-after-milliseconds s25msredis 30000 // 當(dāng)Sentinel節(jié)點(diǎn)集合對(duì)主節(jié)點(diǎn)故障判定達(dá)成一致時(shí),Sentinel領(lǐng)導(dǎo)者節(jié)點(diǎn)會(huì)做故障轉(zhuǎn)移操作,選出新的主節(jié)點(diǎn), // 原來(lái)的從節(jié)點(diǎn)會(huì)向新的主節(jié)點(diǎn)發(fā)起復(fù)制操作,限制每次向新的主節(jié)點(diǎn)發(fā)起復(fù)制操作的從節(jié)點(diǎn)個(gè)數(shù)為1 sentinel parallel-syncs mymaster 1 //故障轉(zhuǎn)移超時(shí)時(shí)間為180000毫秒 sentinel failover-timeout mymaster 180000 daemonize yes   # ======================================================================== # vim s25-sentinel-26380.conf  port 26380 dir /var/redis/data/ logfile "26380.log" sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 daemonize yes  # ======================================================================== # s25-sentinel-26381.conf  port 26381 dir /var/redis/data/ logfile "26381.log" sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 daemonize yes
          2. 分別啟動(dòng)3個(gè)哨兵進(jìn)程,以及查看進(jìn)程信息

            # 1.啟動(dòng)哨兵進(jìn)程 [root@s25linux s25sentinel]# redis-sentinel s25-sentinel-26379.conf [root@s25linux s25sentinel]# redis-sentinel s25-sentinel-26380.conf [root@s25linux s25sentinel]# redis-sentinel s25-sentinel-26381.conf  # 2.查看進(jìn)程信息 [root@s25linux s25sentinel]# ps -ef|grep redis root      20413      1  0 08:45 ?        00:00:00 redis-server *:6379 root      20417      1  0 08:45 ?        00:00:00 redis-server *:6380 root      20422      1  0 08:45 ?        00:00:00 redis-server *:6381 root      20614      1  0 08:55 ?        00:00:00 redis-sentinel *:26379 [sentinel] root      20618      1  0 08:55 ?        00:00:00 redis-sentinel *:26380 [sentinel] root      20622      1  0 08:55 ?        00:00:00 redis-sentinel *:26381 [sentinel]
          3. 可以檢查哨兵的配置文件,以及哨兵的狀態(tài)

            [root@s25linux s25sentinel]# redis-cli -p 26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=s25msredis,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

          6.5.模擬故障

          在哨兵搭建好了之后,模擬干掉主庫(kù),然后等待主從的一個(gè)自動(dòng)化切換

          1. 檢查6379的進(jìn)程,殺死后,哨兵能夠自動(dòng)的,進(jìn)行投票選舉,

            剩下來(lái)的一個(gè)slave為新的master,然后重新分配主從關(guān)系

          2. 故障的修復(fù),修復(fù)6379這個(gè)redis數(shù)據(jù)庫(kù),且檢查它的一個(gè)復(fù)制關(guān)系
            6379數(shù)據(jù)庫(kù)會(huì)重新假如到主從復(fù)制,且變?yōu)橐粋€(gè)新的從庫(kù)

          3. 如果你想恢復(fù)他們的主從關(guān)系,全部kill掉,重新啟動(dòng),默認(rèn)就會(huì)以配置文件分配主從關(guān)系了

          7.redis-cluster搭建

          7.1.準(zhǔn)備節(jié)點(diǎn)

          準(zhǔn)備好6匹馬兒,也就是6個(gè)redis節(jié)點(diǎn),也就是6個(gè)配置文件,redis集群節(jié)點(diǎn)最少是使用6個(gè)

          這6個(gè)配置文件,僅僅是端口號(hào)的不同而已

          • 根目錄下創(chuàng)建 s25rediscluster 文件夾用于實(shí)驗(yàn)

            mkdir /s25rediscluster
          • s25-redis-7000.conf

            port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes   #開(kāi)啟集群模式 cluster-config-file nodes-7000.conf  #集群內(nèi)部的配置文件 # redis cluster需要16384個(gè)slot都正常的時(shí)候才能對(duì)外提供服務(wù), # 換句話說(shuō),只要任何一個(gè)slot異常那么整個(gè)cluster不對(duì)外提供服務(wù)。 因此生產(chǎn)環(huán)境一般為no cluster-require-full-coverage no  
          • 使用sed命令快捷生成其他的配置文件

            # s25-redis-7001.conf # s25-redis-7002.conf # s25-redis-7003.conf # s25-redis-7004.conf # s25-redis-7005.conf  # 使用以下命令快捷創(chuàng)建 sed 's/7000/7001/g' s25-redis-7000.conf > s25-redis-7001.conf sed 's/7000/7002/g' s25-redis-7000.conf > s25-redis-7002.conf sed 's/7000/7003/g' s25-redis-7000.conf > s25-redis-7003.conf sed 's/7000/7004/g' s25-redis-7000.conf > s25-redis-7004.conf sed 's/7000/7005/g' s25-redis-7000.conf > s25-redis-7005.conf
          • 創(chuàng)建數(shù)據(jù)文件夾

            mkdir -p  "/opt/redis/data"
          • 分別啟動(dòng)6個(gè)redis節(jié)點(diǎn),且檢查進(jìn)程

            redis-server s25-redis-7000.conf redis-server s25-redis-7001.conf redis-server s25-redis-7002.conf redis-server s25-redis-7003.conf redis-server s25-redis-7004.conf redis-server s25-redis-7005.conf
          • 此時(shí)是不能寫入數(shù)據(jù)的

            # 此時(shí)你嘗試著寫入數(shù)據(jù),看一看是否能寫進(jìn)去,不能寫入數(shù)據(jù),還沒(méi)有分配虛擬槽# 我們僅僅是啟動(dòng)了6個(gè)redis節(jié)點(diǎn),準(zhǔn)備好了6匹馬兒,馬兒身上的筐還沒(méi)分配,你想

          7.2.ruby配置

          1. 直接yum安裝ruby解釋器ruby和python一樣是一個(gè)解釋性編程語(yǔ)言,日本大神開(kāi)發(fā)的

            # gem是ruby的包管理工具 # ruby ===== python     # gem  ===== pip3    # 方法1:yum安裝: yum install ruby -y   # 方法2:編譯安裝的話使用: wget  .... tar   .... ./configure --prefix=/opt/ruby/ make && make install
          2. 檢查ruby和gem的環(huán)境

            [root@s25linux s25rediscluster]# ruby -v ruby 2.0.0p648 (2015-12-16) [x86_64-linux]  [root@s25linux s25rediscluster]# gem -v 2.0.14.1
          3. 下載ruby操作redis的模塊,用于創(chuàng)建集群

            wget http://rubygems.org/downloads/redis-3.3.0.gem
          4. 用gem安裝此模塊,ruby就可以操作redis數(shù)據(jù)庫(kù)了

            gem install -l redis-3.3.0.gem    #就如同python的 pip3 install xxxx,不難理解  #可以查看gem有哪些包 gem list -- check redis gem
          5. 搜索ruby創(chuàng)建redis集群的腳本,然后將其加入到環(huán)境變量中

            # redis-trib.rb 如何知道它的絕對(duì)路徑? # which 是搜索PATH環(huán)境變量中的命令的絕對(duì)路徑! # find 才是搜索系統(tǒng)上的文件路徑??! find / -name "redis-trib.rb"   #默認(rèn)會(huì)在redis數(shù)據(jù)庫(kù)的編譯安裝路徑下  # 將創(chuàng)建集群的腳本加入到環(huán)境變量,比方說(shuō)你的腳本位置在 /opt/redis/src/redis-trib.rb,然后將其復(fù)制到任一環(huán)境變量中。 cp /opt/redis/src/redis-trib.rb /usr/local/bin/
          6. 一鍵創(chuàng)建集群,且自動(dòng)分配槽位,可以寫入數(shù)據(jù)了。集群會(huì)自動(dòng)分配主從關(guān)系。

            # 每個(gè)主節(jié)點(diǎn),有一個(gè)從節(jié)點(diǎn),代表--replicas 1 redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
          7. 此時(shí)可以查看及檢查下集群的狀態(tài)

            • 查看狀態(tài)

              redis-cli -p 7000 cluster info    redis-cli -p 7000 cluster nodes  #等同于查看nodes-7000.conf文件節(jié)點(diǎn)信息  # 集群主節(jié)點(diǎn)狀態(tài) redis-cli -p 7000 cluster nodes | grep master # 集群從節(jié)點(diǎn)狀態(tài) redis-cli -p 7000 cluster nodes | grep slave
            • 檢查狀態(tài)

              [root@yugo /opt/redis/src 18:42:14]#redis-cli -p 7000 cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_ping_sent:10468 cluster_stats_messages_pong_sent:10558 cluster_stats_messages_sent:21026 cluster_stats_messages_ping_received:10553 cluster_stats_messages_pong_received:10468 cluster_stats_messages_meet_received:5 cluster_stats_messages_received:21026
          8. 進(jìn)入集群寫入數(shù)據(jù),查看數(shù)據(jù)重定向

            # 測(cè)試寫入集群數(shù)據(jù),登錄集群必須使用redis-cli -c -p 7000必須加上-c參數(shù) redis-cli -c -p 7000  127.0.0.1:7000> set name chao      -> Redirected to slot [5798] located at 127.0.0.1:7001        OK 127.0.0.1:7001> exit [root@yugo /opt/redis/src 18:46:07]#redis-cli -c -p 7000 127.0.0.1:7000> ping PONG 127.0.0.1:7000> keys * (empty list or set) 127.0.0.1:7000> get name -> Redirected to slot [5798] located at 127.0.0.1:7001 "chao"

            工作原理:

            redis客戶端任意訪問(wèn)一個(gè)redis實(shí)例,如果數(shù)據(jù)不在該實(shí)例中,通過(guò)重定向引導(dǎo)客戶端訪問(wèn)所需要的redis實(shí)例

          以上內(nèi)容大部分來(lái)源于路飛學(xué)城于超老師博客,個(gè)人做了精簡(jiǎn)與完善,如有侵權(quán)請(qǐng)聯(lián)系。

          推薦學(xué)習(xí):Redis視頻教程

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)