一. 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