本篇文章給大家?guī)砹岁P(guān)于Redis的相關(guān)知識,其中主要介紹了關(guān)于redis的一些基礎(chǔ)知識,redis是內(nèi)存性數(shù)據(jù)庫,斷電,數(shù)據(jù)丟失,進程重啟,數(shù)據(jù)丟失,下面一起來看一下,希望對大家有幫助。
推薦學(xué)習(xí):Redis視頻教程
Redis
1.基礎(chǔ)知識
redis是內(nèi)存性數(shù)據(jù)庫,斷電,數(shù)據(jù)丟失,進程重啟,數(shù)據(jù)丟失
需要配置redis的數(shù)據(jù)持久化,防止數(shù)據(jù)丟失
redis支持ms復(fù)制,讀寫分離,防止單點故障,數(shù)據(jù)丟失
1.1.安裝
-
rpm包安裝
-
yum自動化安裝,在阿里的yum倉庫中,有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 安裝到指定目錄,默認在/usr/local/bin make install DESTDIR=/your/dir
1.2.配置文件
修改redis.conf,更改默認端口,設(shè)置密碼,開啟安全模式等操作
用yum安裝的redis,默認配置文件在/etc/redis.conf
-
配置文件參數(shù)解釋
# vim /etc/redis.conf #打開如下參數(shù)即可# 這里是綁定redis的啟動地址,如果你支持遠程連接,就改為0.0.0.0bind 0.0.0.0 #更改端口port 6500#設(shè)置redis的密碼requirepass haohaio#默認打開了安全模式protected-mode yes #打開一個redis后臺運行的參數(shù)daemonize yes
1.3.啟動Redis
# 為什么使用systemctl start redis無法連接呢? # 是因為這個命令默認連接的是6379端口,我們更改了redis端口,因此無法連接了 # 請使用如下的命令,指定配置文件啟動 [root@s25linux opt]# redis-server /etc/redis.conf
-
檢查進程狀態(tài)
#檢查redis的進程 [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.啟動Redis客戶端連接服務(wù)端
# 連接redis服務(wù)端,指定ip地址和端口,以及密碼連接redis # -p 指定端口 # -h 指定ip地址 # auth指令,用于密碼驗證 [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 過期時間 4.ttl key 查看key過期剩余時間 -2表示key已經(jīng)不存在了 5.persist 取消key的過期時間 -1表示key存在,沒有過期時間 6.exists key 判斷key存在 存在返回1 否則0 7.del keys 刪除key 可以刪除多個 8.dbsize 計算key的數(shù)量
2.RDB持久化
redis
提供了RDB持久化
的功能,這個功能可以將redis
在內(nèi)存中的的狀態(tài)保存到硬盤中,它可以手動執(zhí)行。
也可以再redis.conf
中配置,定期執(zhí)行。
RDB持久化產(chǎn)生的RDB文件是一個經(jīng)過壓縮的二進制文件,這個文件被保存在硬盤中,redis可以通過這個文件還原數(shù)據(jù)庫當時的狀態(tài)。
-
配置rdb機制的數(shù)據(jù)持久化,數(shù)據(jù)文件是一個看不懂的二進制文件,且配置觸發(fā)的時間機制
vim s25_rdb_redis.conf ,寫入如下內(nèi)容
daemonize yes #后臺運行 port 6379 #端口 logfile /data/6379/redis.log #指定redis的運行日志,存儲位置 dir /data/6379 #指定redis的數(shù)據(jù)文件,存放路徑 dbfilename s25_dump.rdb #指定數(shù)據(jù)持久化的文件名字 bind 127.0.0.1 #指定redis的運行ip地址 #redis觸發(fā)save指令,用于數(shù)據(jù)持久化的時間機制 # 900秒之內(nèi)有1個修改的命令操作,如set .mset,del save 900 1 # 在300秒內(nèi)有10個修改類的操作 save 300 10 # 60秒內(nèi)有10000個修改類的操作 save 60 10000
-
創(chuàng)建redis的數(shù)據(jù)文件夾,
mkdir -p /data/6379
-
殺死之前所有的redis,防止擾亂實驗
[root@s25linux s25redis]# pkill -9 redis
-
指定配置了rdb的redis配置文件,啟動
redis-server s25_rdb_redis.conf
-
如果沒有觸發(fā)redis的持久化時間機制,數(shù)據(jù)文件是不會生成的,數(shù)據(jù)重啟進程也會丟
-
可以通過編寫腳本,讓redis手動執(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
-
存在了rdb持久化的文件之后,重啟redis進程,數(shù)據(jù)也不會丟了,redis在重啟之后,會讀取dump.rdb文件中的數(shù)據(jù)
rdb的弊端在于什么,如果沒有觸發(fā)持久化機制,就發(fā)生了機器宕機,數(shù)據(jù)就會丟失了,因此redis有一個更好的aof機制
3.AOF持久化
AOF(append-only log file)
記錄服務(wù)器執(zhí)行的所有變更操作命令(例如set del等),并在服務(wù)器啟動時,通過重新執(zhí)行這些命令來還原數(shù)據(jù)集
AOF 文件中的命令全部以redis協(xié)議的格式保存,新命令追加到文件末尾。
優(yōu)點:最大程度保證數(shù)據(jù)不丟
缺點:日志記錄非常大
redis-client 寫入數(shù)據(jù) > redis-server 同步命令 > AOF文件
-
新建配置文件,配置以下參數(shù)。
vim s25_aof_redis.conf AOF持久化配置,兩條參數(shù) appendonly yes appendfsync always 總是修改類的操作 everysec 每秒做一次持久化 no 依賴于系統(tǒng)自帶的緩存大小機制
-
例如參數(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
-
創(chuàng)建aof的數(shù)據(jù)文件夾
mkdir -p /data/6379aof
-
啟動aof的Redis數(shù)據(jù)庫
redis-server s25_aof_redis.conf
-
aof機制的數(shù)據(jù)庫,在首次啟動的時候,就會生成aof數(shù)據(jù)文件了,如下
[root@s25linux 6379aof]# lsappendonly.aof redis.log
到此已經(jīng)配置結(jié)束,以下為實驗步驟
-
登錄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"
-
寫入的操作,會被記錄到aof文件日志中
-
殺死所有的redis進程,且重啟
[root@s25linux s25redis]# pkill -9 redis[root@s25linux s25redis]# redis-server s25_aof_redis.conf
-
redis的aof持久化機制,是在重啟的時候,redis重新執(zhí)行一遍aof文件中的命令,實現(xiàn)數(shù)據(jù)復(fù)現(xiàn)
-
如果該aof日志文件被刪除,數(shù)據(jù)也就無法恢復(fù)了
4.一主一從數(shù)據(jù)同步復(fù)制
4.1.說明
上午的最后一步,演示的是,當我們刪除aof文件,或者是rdb,aof文件異常損壞,丟失,數(shù)據(jù)不也沒了嗎?
在一臺機器上運行2個及以上的redis,是redis支持多實例的功能,基于端口號的不同,就能夠運行多個相互獨立的redis數(shù)據(jù)庫
什么是多實例 就是機器上運行了多個redis相互獨立的進程 互不干擾的獨立的數(shù)據(jù)庫 叫做多個redis數(shù)據(jù)庫的實例,基于配置文件區(qū)分即可
如圖是redis的多實例功能,且配置主從同步的圖
4.2.配置步驟
-
準備好2個redis的配置文件,分別寫入如下內(nèi)容
-
vim s25-master-redis.conf
port 6379 # 端口 daemonize yes # 后臺運行 pidfile /s25/6379/redis.pid # loglevel notice logfile "/s25/6379/redis.log" # 日志存放目錄 dbfilename dump.rdb # 持久化文件名 dir /s25/6379 # 數(shù)據(jù)文件保存的路徑 protected-mode no # 打開安全模式
-
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)系,啟動后,立即就會建立復(fù)制 slaveof 127.0.0.1 6379
-
-
分別生成2個redis的數(shù)據(jù)文件夾
mkdir -p /s25/{6379,6389}
-
分別啟動2個redis數(shù)據(jù)庫。
[root@s25linux s25redis]# redis-server s25-master-redis.conf [root@s25linux s25redis]# [root@s25linux s25redis]# [root@s25linux s25redis]# redis-server s25-slave-redis.conf
-
分別檢查他們的進程,以及復(fù)制關(guān)系
[root@s25linux s25redis]# redis-cli -p 6379 info replication [root@s25linux s25redis]# redis-cli -p 6389 info replication # 通過一條命令,配置他們的復(fù)制關(guān)系,注意,這個命令只是臨時配置redis的復(fù)制關(guān)系, # 想要永久修改,還得修改配置文件 redis-cli -p 6389 slaveof 127.0.0.1 6379
-
配置完畢說明
此時 6379 ==== 主庫 6389 ==== 從庫 此時可以向6379中寫入數(shù)據(jù),能夠同步到6389中 6389是一個只讀的數(shù)據(jù)庫,無法寫入數(shù)據(jù)
5.一主多從及主從復(fù)制故障切換
5.1.一主多從配置
-
再創(chuàng)建一個配置文件,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
-
創(chuàng)建數(shù)據(jù)文件夾
mkdir -p /s25/6399
-
此時可以啟動6399的數(shù)據(jù)庫,查看他的身份復(fù)制關(guān)系
[root@s25linux s25redis]# redis-cli -p 6399 info replication
5.2.故障切換
-
故障模擬
-
環(huán)境準備,準備3個redis的數(shù)據(jù)庫實例,分別是 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
-
分別查看復(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
-
此時模擬故障,直接kill掉主庫
kill -9 11294
-
此時留下2個孤零零的從庫,沒有了主人,還沒發(fā)寫入數(shù)據(jù),很難受
此時一位從庫(6399),不樂意了,翻身農(nóng)奴做主人,去掉自己的從庫身份,
沒有這個從庫的枷鎖,我就是我自己的主人
[root@s25linux s25redis]# redis-cli -p 6399 slaveof no one
-
此時6399已然是主庫了,修改6389的復(fù)制信息,改為6399即可
[root@s25linux s25redis]# redis-cli -p 6389 slaveof 127.0.0.1 6399
-
此時檢查他們的復(fù)制關(guān)系
[root@s25linux s25redis]# redis-cli -p 6389 info replication[root@s25linux s25redis]# redis-cli -p 6399 info replication
-
此時可以向主庫6399寫入數(shù)據(jù),6389查看數(shù)據(jù)即可
主庫不掛,從庫掛掉的場景
從庫掛掉,無所謂,重新再建立一個從庫,加入主從復(fù)制即可,。,。
你會發(fā)現(xiàn),如此的手動切換復(fù)制關(guān)系,其實是很難受的,如果在夜里凌晨四點,redis主庫突然掛了,你該怎么辦?你媳婦愿意讓你起來干活嗎?
因此你該咋辦?是不是得學(xué)點別的技術(shù)?你希望有什么東西能幫你不?
- 有錢,你搞一個賈維斯
- 希望有一個人,能24h幫你盯著這個主從復(fù)制,發(fā)現(xiàn)主庫宕機之后,自動的幫你進行主從切換
6.高可用哨兵 sentinel
6.1.工作原理
配置好redis的哨兵進程,一般都是使用3個哨兵(保安) 哨兵的作用是盯著redis主庫,不斷詢問它是否存活,如果超過30s(設(shè)置的時間閾值)都沒有回應(yīng),3個哨兵會判斷主庫宕機,談話進行投票機制, 因為3個哨兵,要自動的去選擇從庫為新的主庫,每個哨兵的意見可能不一樣,因此引出投票機制,少數(shù)服從多數(shù)。 當多個哨兵達成一致,選擇某一個從庫階段,自動的修改他們的配置文件,切換新的主庫 此時如果宕機的主庫,恢復(fù)后,哨兵也會自動將其加入集群,且自動分配為新的從庫 這一些都是自動化,無需人為干預(yù),賊牛屁
6.2.架構(gòu)
6.3.Redis配置
-
準備3個redis節(jié)點,1主2從的redis集群
# redis支持多實例-------基于多個配置文件,運行處多個redis相互獨立的進程 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個配置文件,準備分別啟動該進程 [root@s25linux s25sentinel]# ls s25-redis-6379.conf s25-redis-6380.conf s25-redis-6381.conf
-
創(chuàng)建數(shù)據(jù)存儲文件夾
mkdir /etc/redis/data
-
分別啟動3個進程后,檢查進程情況
[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
-
確定3個庫的主從關(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 配置
-
分別準備3個哨兵的配置文件,修改如下,三個哨兵的配置文件,僅僅是端口號的不同
# vim s25-sentinel-26379.conf port 26379 dir /var/redis/data/ logfile "26379.log" // 當前Sentinel節(jié)點監(jiān)控 192.168.119.10:6379 這個主節(jié)點 // 2代表判斷主節(jié)點失敗至少需要2個Sentinel節(jié)點節(jié)點同意 // mymaster是主節(jié)點的別名 sentinel monitor mymaster 127.0.0.1 6379 2 // 每個Sentinel節(jié)點都要定期PING命令來判斷Redis數(shù)據(jù)節(jié)點和其余Sentinel節(jié)點是否可達, // 如果超過30000毫秒30s且沒有回復(fù),則判定不可達 sentinel down-after-milliseconds s25msredis 30000 // 當Sentinel節(jié)點集合對主節(jié)點故障判定達成一致時,Sentinel領(lǐng)導(dǎo)者節(jié)點會做故障轉(zhuǎn)移操作,選出新的主節(jié)點, // 原來的從節(jié)點會向新的主節(jié)點發(fā)起復(fù)制操作,限制每次向新的主節(jié)點發(fā)起復(fù)制操作的從節(jié)點個數(shù)為1 sentinel parallel-syncs mymaster 1 //故障轉(zhuǎn)移超時時間為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
-
分別啟動3個哨兵進程,以及查看進程信息
# 1.啟動哨兵進程 [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.查看進程信息 [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]
-
可以檢查哨兵的配置文件,以及哨兵的狀態(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.模擬故障
在哨兵搭建好了之后,模擬干掉主庫,然后等待主從的一個自動化切換
-
檢查6379的進程,殺死后,哨兵能夠自動的,進行投票選舉,
剩下來的一個slave為新的master,然后重新分配主從關(guān)系
-
故障的修復(fù),修復(fù)6379這個redis數(shù)據(jù)庫,且檢查它的一個復(fù)制關(guān)系
6379數(shù)據(jù)庫會重新假如到主從復(fù)制,且變?yōu)橐粋€新的從庫 -
如果你想恢復(fù)他們的主從關(guān)系,全部kill掉,重新啟動,默認就會以配置文件分配主從關(guān)系了
7.redis-cluster搭建
7.1.準備節(jié)點
準備好6匹馬兒,也就是6個redis節(jié)點,也就是6個配置文件,redis集群節(jié)點最少是使用6個
這6個配置文件,僅僅是端口號的不同而已
-
根目錄下創(chuàng)建 s25rediscluster 文件夾用于實驗
mkdir /s25rediscluster
-
s25-redis-7000.conf
port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes #開啟集群模式 cluster-config-file nodes-7000.conf #集群內(nèi)部的配置文件 # redis cluster需要16384個slot都正常的時候才能對外提供服務(wù), # 換句話說,只要任何一個slot異常那么整個cluster不對外提供服務(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"
-
分別啟動6個redis節(jié)點,且檢查進程
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ù)據(jù)的
# 此時你嘗試著寫入數(shù)據(jù),看一看是否能寫進去,不能寫入數(shù)據(jù),還沒有分配虛擬槽# 我們僅僅是啟動了6個redis節(jié)點,準備好了6匹馬兒,馬兒身上的筐還沒分配,你想
7.2.ruby配置
-
直接yum安裝ruby解釋器ruby和python一樣是一個解釋性編程語言,日本大神開發(fā)的
# gem是ruby的包管理工具 # ruby ===== python # gem ===== pip3 # 方法1:yum安裝: yum install ruby -y # 方法2:編譯安裝的話使用: wget .... tar .... ./configure --prefix=/opt/ruby/ make && make install
-
檢查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
-
下載ruby操作redis的模塊,用于創(chuàng)建集群
wget http://rubygems.org/downloads/redis-3.3.0.gem
-
用gem安裝此模塊,ruby就可以操作redis數(shù)據(jù)庫了
gem install -l redis-3.3.0.gem #就如同python的 pip3 install xxxx,不難理解 #可以查看gem有哪些包 gem list -- check redis gem
-
搜索ruby創(chuàng)建redis集群的腳本,然后將其加入到環(huán)境變量中
# redis-trib.rb 如何知道它的絕對路徑? # which 是搜索PATH環(huán)境變量中的命令的絕對路徑! # find 才是搜索系統(tǒng)上的文件路徑!! find / -name "redis-trib.rb" #默認會在redis數(shù)據(jù)庫的編譯安裝路徑下 # 將創(chuàng)建集群的腳本加入到環(huán)境變量,比方說你的腳本位置在 /opt/redis/src/redis-trib.rb,然后將其復(fù)制到任一環(huán)境變量中。 cp /opt/redis/src/redis-trib.rb /usr/local/bin/
-
一鍵創(chuàng)建集群,且自動分配槽位,可以寫入數(shù)據(jù)了。集群會自動分配主從關(guān)系。
# 每個主節(jié)點,有一個從節(jié)點,代表--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
-
此時可以查看及檢查下集群的狀態(tài)
-
查看狀態(tài)
redis-cli -p 7000 cluster info redis-cli -p 7000 cluster nodes #等同于查看nodes-7000.conf文件節(jié)點信息 # 集群主節(jié)點狀態(tài) redis-cli -p 7000 cluster nodes | grep master # 集群從節(jié)點狀態(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
-
-
進入集群寫入數(shù)據(jù),查看數(shù)據(jù)重定向
# 測試寫入集群數(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客戶端任意訪問一個redis實例,如果數(shù)據(jù)不在該實例中,通過重定向引導(dǎo)客戶端訪問所需要的redis實例
以上內(nèi)容大部分來源于路飛學(xué)城于超老師博客,個人做了精簡與完善,如有侵權(quán)請聯(lián)系。
推薦學(xué)習(xí):Redis視頻教程