天天看點

Redis持久化政策、安全擴充(面試問題)

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

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

第一個位置:

Redis持久化政策、安全擴充(面試問題)

第二個位置:

Redis持久化政策、安全擴充(面試問題)

:wq 儲存完并退出。

cp redis-6001.conf redis-6002.conf
vim redis-6002.conf
           

修改redis-6002.conf

第一個位置:

Redis持久化政策、安全擴充(面試問題)

第二個位置:

Redis持久化政策、安全擴充(面試問題)

第三個位置

Redis持久化政策、安全擴充(面試問題)
cp redis-6002.conf redis-6003.conf
vim redis-6003.conf
           

修改redis-6003.conf檔案

修改的第一個地方:

Redis持久化政策、安全擴充(面試問題)

修改的第二個地方:

Redis持久化政策、安全擴充(面試問題)

: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
           
Redis持久化政策、安全擴充(面試問題)

到此,主從伺服器搭建成功。

通路

bin/redis-cli -p 6001
info replication   #檢視主從詳細資訊
           

重新開機一個終端:

su -
Password:
cd  /usr/local/redis-replica/redis
bin/redis-cli -p 6002 
info replication
           

6002在這裡是用作備份用的,隻能讀,不可以寫:

Redis持久化政策、安全擴充(面試問題)

6001是主,可讀可寫,在6001中設定a的value為b,并且讀取a的value:

Redis持久化政策、安全擴充(面試問題)

在6002從中,讀取a的值,這時,由于主裡寫了,是以這裡可以讀出資料:

Redis持久化政策、安全擴充(面試問題)

再重新開機一個終端:(記為第三個終端)

su -
cd /usr/local/redis-replica/redis
bin/redis-cli -p 6001 shutdown #關閉主服務
ps aux | grep redis      #檢視狀态資訊

           

在第一個終端,退出主服務:

在第三個終端,最後打開那個:

ps aux | grep redis
           

再在第一個終端,輸入,嘗試啟動6001

顯示連接配接結果:

Redis持久化政策、安全擴充(面試問題)

在第二個終端中,擷取a的值設定值

get a  #可以獲得
set a a  #失敗
info replication #查新資訊
           

運作結果:

Redis持久化政策、安全擴充(面試問題)
exit
bin/redis-cli -p 6003
info replication
           
Redis持久化政策、安全擴充(面試問題)

關閉第三個終端;

在第一個終端:

bin/redis-cli -p 6002 shutdown   #關閉6002
bin/redis-cli -p 6003 shutdown   #關閉6003
           

啟動太費勁了,編寫一個sh腳本檔案:

vim startup.sh
           

腳本内容如下: (:+wq)儲存并且退出。

Redis持久化政策、安全擴充(面試問題)
ll    #檢視目錄下startup.sh檔案權限
chmod 755 startup.sh  #賦權限
ll  #再次檢視startup.sh檔案的權限
./startup.sh   #執行sh檔案
ps aux | grep redis
           

再編寫一個批量關閉的sh檔案

vim shutdown.sh  
           
Redis持久化政策、安全擴充(面試問題)

:wq 儲存退出;

Redis持久化政策、安全擴充(面試問題)
ll   #檢視權限
chmod 755 shutdown.sh #賦權限
ll  
./shutdown.sh
ps aux | grep redis #檢視是否關閉成功
           

主從缺陷:主節點如果不開啟,從節點隻可以讀資料。

2 哨兵(Sentinel)

2.1 哨兵簡介

Redis持久化政策、安全擴充(面試問題)

2.2 搭建多哨兵 (master-slave叢集)

Redis持久化政策、安全擴充(面試問題)
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
           

修改第一處:

Redis持久化政策、安全擴充(面試問題)

修改第二處:

Redis持久化政策、安全擴充(面試問題)

修改第三處:

Redis持久化政策、安全擴充(面試問題)

修改第四處:

Redis持久化政策、安全擴充(面試問題)

修改第五處:

Redis持久化政策、安全擴充(面試問題)

:wq ,修改完這五處,儲存并且退出。

cp sentinel-6101.conf sentinel-6102.conf 
cp sentinel-6101.conf sentinel-6103.conf
vim sentinel-6102.conf
           

修改第一處:

Redis持久化政策、安全擴充(面試問題)

修改第二處:

Redis持久化政策、安全擴充(面試問題)

修改第三處:

Redis持久化政策、安全擴充(面試問題)

:wq 儲存後退出。

vim sentinel-6103.conf
           

修改第一處:

Redis持久化政策、安全擴充(面試問題)

修改第二處:

Redis持久化政策、安全擴充(面試問題)

修改第三處:

Redis持久化政策、安全擴充(面試問題)

2.3 啟動哨兵

vim start-sentinel.sh
           
Redis持久化政策、安全擴充(面試問題)

:wq 儲存并且退出。

ll
chmod 755 start-sentinel.sh      #賦予權限
ll
./start-sentinel.sh  #執行sh檔案
           

檢視是否啟動成功:

ps aux | grep redis  
           
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
           
Redis持久化政策、安全擴充(面試問題)
bash
exit    #退出終端
bin/redis-cli -p 6002   #開啟6002端口
info replication
get a
set b b
get b
           
Redis持久化政策、安全擴充(面試問題)
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 
           
Redis持久化政策、安全擴充(面試問題)
Redis持久化政策、安全擴充(面試問題)

檢視日志檔案

cd /var
ls | grep sentinel
more sentinel-6101.log
           
Redis持久化政策、安全擴充(面試問題)