一. Redis持久化政策(面試問題)

RDB:
介紹連結:https://blog.csdn.net/qq_35433716/article/details/82191511
AOF:
AOF預設是關閉的
appendonly no
,需要配置檔案redis.conf中開啟AOF。Redis支援AOF和RDB同時生效,如果同時存在,AOF優先級高于RDB(Redis重新啟動時會使用Redis進行資料恢複)
差別:RDB穩定和安全;AOF相對代價高些,磁盤侵占度太高。
二.Redis安全擴充
1.Redis主從複制
Redis支援叢集功能。為了保證單一節點可用性,redis支援主從複制功能。每個節點有N個複制品,其中一個複制品是主(master),另外N-1個複制品是從(Slave),也就是說Redis支援一主多從。
一個主可有多個從,而一個從又可以被看成主,它還可以有多個從。
su- #切換到root身份
Password:
cd /usr/local/redis
cd .. #回退到local目錄下
mkdir redis-replica #建立一個目錄
cp -r redis redis-replica/ #複制redis到redis-replica目錄下
cd redis-replica/ #進入redis-replica目錄下
ls
cd redis/
ls
rm -rf dump.rdp #如存在删除,沒有省略這一步
ls
mv redis.conf redis-6001.conf #更改redis.conf檔案名為redis-6001.conf
vim redis-6001.conf #修改配置檔案
修改redis-6001.conf
第一個位置:
第二個位置:
:wq 儲存完并退出。
cp redis-6001.conf redis-6002.conf
vim redis-6002.conf
修改redis-6002.conf
第一個位置:
第二個位置:
第三個位置
cp redis-6002.conf redis-6003.conf
vim redis-6003.conf
修改redis-6003.conf檔案
修改的第一個地方:
修改的第二個地方:
:wq儲存退出。
到此,配置完成了。
接下來,開始啟動:
bin/redis-server redis-6001.conf #讀取到redis-6001.conf配置檔案
bin/redis-server redis-6002.conf #讀取到redis-6002.conf配置檔案
bin/redis-server redis-6003.conf #讀取到redis-6003.conf配置檔案
檢視啟動狀況:
ps aux | grep redis
到此,主從伺服器搭建成功。
通路
bin/redis-cli -p 6001
info replication #檢視主從詳細資訊
重新開機一個終端:
su -
Password:
cd /usr/local/redis-replica/redis
bin/redis-cli -p 6002
info replication
6002在這裡是用作備份用的,隻能讀,不可以寫:
6001是主,可讀可寫,在6001中設定a的value為b,并且讀取a的value:
在6002從中,讀取a的值,這時,由于主裡寫了,是以這裡可以讀出資料:
再重新開機一個終端:(記為第三個終端)
su -
cd /usr/local/redis-replica/redis
bin/redis-cli -p 6001 shutdown #關閉主服務
ps aux | grep redis #檢視狀态資訊
在第一個終端,退出主服務:
在第三個終端,最後打開那個:
ps aux | grep redis
再在第一個終端,輸入,嘗試啟動6001
顯示連接配接結果:
在第二個終端中,擷取a的值設定值
get a #可以獲得
set a a #失敗
info replication #查新資訊
運作結果:
exit
bin/redis-cli -p 6003
info replication
關閉第三個終端;
在第一個終端:
bin/redis-cli -p 6002 shutdown #關閉6002
bin/redis-cli -p 6003 shutdown #關閉6003
啟動太費勁了,編寫一個sh腳本檔案:
vim startup.sh
腳本内容如下: (:+wq)儲存并且退出。
ll #檢視目錄下startup.sh檔案權限
chmod 755 startup.sh #賦權限
ll #再次檢視startup.sh檔案的權限
./startup.sh #執行sh檔案
ps aux | grep redis
再編寫一個批量關閉的sh檔案
vim shutdown.sh
:wq 儲存退出;
ll #檢視權限
chmod 755 shutdown.sh #賦權限
ll
./shutdown.sh
ps aux | grep redis #檢視是否關閉成功
主從缺陷:主節點如果不開啟,從節點隻可以讀資料。
2 哨兵(Sentinel)
2.1 哨兵簡介
2.2 搭建多哨兵 (master-slave叢集)
su -
Password:
cd /usr/local
mkdir redis-sentinel #建立一個redis-sentinel目錄
cd redis-sentinel
ls
cp /usr/local/redis ./ -r #(-r 指定”/usr/local/redis“為目錄)
ls
cd redis/
ls
rm -rf dump.rdb
rm -rf redis.conf
clear
ls
cd
ls
cd upload/
cd redis-5.0.5/
cp sentinel.conf /usr/local/redis-sentinel/redis
重新打開一個連接配接:
su -
Password:
cd /usr/local/redis-sentinel/redis
ls #檢視複制是否成功
mv sentinel.conf sentinel-6101.conf #更改sentinel.conf檔案名
vim sentinel-6101.conf
修改第一處:
修改第二處:
修改第三處:
修改第四處:
修改第五處:
:wq ,修改完這五處,儲存并且退出。
cp sentinel-6101.conf sentinel-6102.conf
cp sentinel-6101.conf sentinel-6103.conf
vim sentinel-6102.conf
修改第一處:
修改第二處:
修改第三處:
:wq 儲存後退出。
vim sentinel-6103.conf
修改第一處:
修改第二處:
修改第三處:
2.3 啟動哨兵
vim start-sentinel.sh
:wq 儲存并且退出。
ll
chmod 755 start-sentinel.sh #賦予權限
ll
./start-sentinel.sh #執行sh檔案
檢視是否啟動成功:
ps aux | grep redis
在另一個終端,
cd /usr/local/redis
bin/redis-cli -p 6001
info replication
打開第三個終端:
su -
Password:
cd /usr/local/redis
bin/redis-cli -p 6001 shutdown
在第一次打開的6001的那個終端,執行以下指令:
info replication
bash
exit #退出終端
bin/redis-cli -p 6002 #開啟6002端口
info replication
get a
set b b
get b
exit
clear #清屏
cd /usr/local/redis-replica/redis
ls
bin/redis-server redis-6001.conf
bin/redis-cli -p 6001
info replication
get b
set c c
檢視日志檔案
cd /var
ls | grep sentinel
more sentinel-6101.log