一、什么是Redid的持久化
Redis 的持久化是指将数据库中的数据保存到磁盘上的过程,以便在服务器重启或其他意外情况下能够恢复数据,Redis的数据是保存在内存中的,如果没有持久化,Redis宕机之后,数据就会丢失。
二、Redis安装:linux版
2.1先具备GCC编译环境
什么是GCC
GCC 是 GNU Compiler Collection 的缩写,即 GNU 编译器套装。它是一套由 GNU 项目开发的编译器。
GCC 的主要功能是将源代码编译成可执行文件或目标代码。
安装命令:yum -y install gcc-c++
更新gcc的版本为9(centos7自带的版本是4.8.5)
执行 yum -y install centos-release-scl
执行 yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9
执行 scl enable devtoolset-9 bash
查看GCC版本:gcc -v
2.2 安装Reis
2.2.1 下载Reidis安装包
进入到opt 目录
cd /opt
wget https://github.com/redis/redis/archive/refs/tags/7.0.2.tar.gz
2.2.2 解压Redis安装包
tar zxvf 7.0.2.tar.gz
2.2.3 修改redis的安装目录
创建redis本地存放目录
mkdir /usr/local/redis/
修改redis的安装目录:修改为 PREFIX?=/usr/local/redis
vi redis-7.0.2/src/Makefile
2.2.4 进入目录编译安装Redis
进入目录进行编译
cd redis-7.0.2/
make
安装Redis
make install
2.2.5 后台启动Redis
在/root目录下创建myredis目录,用于存储启动使用的配置文件
cd /root
mkdir myredis
拷贝一份redis.conf到myredis目录
cp /opt/redis-7.0.2/redis.conf /root/myredis/
修改配置文件中的内容
- 修改redis.conf(257行附近?或者搜索 ) 文件将里面的daemonize no 改成 yes,让服务在后台启动
- 修改配置文件中的 bind ,注释该配置,取消绑定仅主机登录
- 修改protected-mode 为no,取消保护模式
vi /root/myredis/redis.conf
保存退出: 切换到目录模式 输入wq
进入到redis本次存放路径并启动redis
cd /usr/local/redis/bin/
./redis-server /root/myredis/redis.conf
查看服务启动状态
ps -ef | grep redis
关闭防火墙
systemctl stop firewalld.service
设置开机自动关闭防火墙
systemctl disable firewalld.service
通过redis连接工具连接
三、持久化方式:RDB
3.1RDB介绍
RDB(Redis Database) :它是一种定期将数据快照保存到磁盘的方式。在指定的时间间隔内,Redis 会将当前的数据状态生成一个二进制文件。
- 优点:生成的文件相对较小,恢复速度快。
- 缺点:可能会丢失在两次快照之间的数据。
3.2具体实现步骤
3.2.1 自动触发
新建dumpfiles文件夹
cd /root/myredis/
mkdir dumpfiles
修改配置文件redis.config
重新启动redis
cd /usr/local/redis/bin/
./redis-server /root/myredis/redis.conf
还原RDB文件,先清除Redis数据
重新启动Redis
执行flushall/flushdb命令也会产生dump.rdb文件,但里面是空的,无意义
不可以把备份文件dump.rdb和生产redis服务器放在同一台机器,必须分开各自存储,以防生产机物理损坏后备份文件也挂了。
3.2.2 手动触发
Redis提供了两个命令来生成RDB文件分别是save和bgsave
实际生产中只允许用bgsave,因为save会终止Redis其他线程,导致内存缓存不可用
手动删除RDB文件
rm -f dump6379.rdb
查看rdb目录
lastsave 可以获取上一个basave的时间戳
在通过 date -d @时间戳
就可以查看上一次保存的时间
如何检查修复dump.rdb文件?
redis-check-rdb dump6379.rdb
四、持久化方式:AOF
4.1 AOF介绍
- AOF(Append Only File) :它以日志的形式记录 Redis 执行的每个写操作。当 Redis 重新启动时,可以通过重新执行这些写操作来还原数据。
- 优点:可以更好地保证数据的完整性。
- 缺点:随着时间的推移,AOF 文件可能会变得较大。
4.2具体实现步骤
修改配置文件,把appendonly on改为yes :(默认是no关闭,设置为yes就打开aof待持久化支持)
重启redis并修改数据
shutdown
quit
./redis-server /root/myredis/redis.conf
./redis-cli
查看/root/myredis目录下产生的文件
先删除RDB文件来验证AOF还原数据
rm -f dump6379.rdb
重启redis
SHUTDOWN
quit
./redis-server /root/myredis/redis.conf
./redis-cli
异常修复命令:redis-check-aof --fix进行修复
4.3 AOF的重写机制
AOF(Append Only File)重写是 Redis 中的一种优化机制,用于减小 AOF 文件的体积,提高系统性能。随着服务器运行时间的增长,AOF 文件会越来越大,导致使用大文件还原所需的时间也越多。重写并不是一条条分析 AOF 文件中的日志,而是从数据库中读取现在的值,然后用一条命令来记录键值对,代替之前记录这个键值对的多条命令。
官网默认配置
注意 ,同时满足,且的关系才会触发
1 根据上次重写后的aof大小,判断当前aof大小是不是增长了1倍
2 重写时满足的文件大小
4.3.1 自动触发
开启aof
重写峰值修改为1k
关闭混合,设置为no
删除之前的全部aof和rdb,清除干扰项
4.3.2 手动触发
客户端向服务器发送bgrewriteaof命令
bgrewriteaof
五、混合的持久化方式:RDB+AOF
在同时开启RDB 和AOF 持久化时,重启时只会加载 AOF 文件,不会加载 RDB 文件
默认清空下是不开启AOF的,如果开启了AOF,则重启Redis的时候AOF会被优先调用,因为AOF的优先级高于RDB
- 1 开启混合方式设置
设置aof-use-rdb-preamble的值为 yes yes表示开启,设置为no表示禁用
- 2 RDB+AOF的混合方式
RDB镜像做全量持久化,AOF做增量持久化
先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务的时候会从RDB和AOF两部分恢复数据,既保证了数据完整性,又提高了恢复数据的性能。简单来说:混合持久化方式产生的文件一部分是RDB格式,一部分是AOF格式。AOF包括了RDB头部+AOF混写
六、关闭Redi持久化:纯缓存模式
6.1 关闭RDB
把save设置为 save "" 即可
禁用rdb持久化模式下,我们仍然可以使用命令save、bgsave生成rdb文件
6.2 关闭AOF
将appendonly 后面修改为no
七、总结
本文主要介绍了Redis的安装,已经Redis的两种持久化方式的介绍以及使用,还介绍了如何关闭持久化,实际开发中根据业务的具体要求选择具体的方式即可