天天看点

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持久化策略、安全扩展(面试问题)