redis的持久化

第一章、redis的持久化

1.1)持久化概述

①持久化可以理解为将数据存储到一个不会丢失的地方,Redis 的数据存储在内存中,电脑关闭数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就算是一种持久化。

②为解决这个问题,redis提供了两种持久化的方式,便于发生故障后能迅速恢复数据,分别是RDB(Redis DataBase)和AOF(Append Only File)。

③两种方式也可以同时使用,优先采用AOF方式来进行数据恢复,因为AOF方式的数据恢复完整度更高。

1.2)RDB方式持久化

①就是在指定的时间点内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存。

②RDB 技术非常适合做备份,可以保存最近一个小时,一天,一个月的全部数据。保存数据是在单独的进程中写文件,不影响 Redis 的正常使用。RDB 恢复数据时比其他 AOF 速度快。

③RDB缺点:即使每5分钟都持久化一次,当redis故障时,仍然会有近5分钟的数据丢失。

1.2.1)RDB配置过程

在配置文件 redis.conf 中搜索 SNAPSHOTTING, 查找在注释开始和结束之间的关于 RDB 的配置说明。配置地方有三处。

java 复制代码
①: 配置执行 RDB 生成快照文件的时间策略。 让它在" N 秒内数据集至少有 M 个 key 改动"
这一条件被满足时,自动保存一次数据集。 
 
配置格式:save  <seconds>  <changes>
save 900 1
save 300 10 
save 60 10000 

②: dbfilename:设置 RDB 的文件名,默认文件名为 dump.rdb 
③: dir:指定 RDB 文件的存储位置,默认是 ./ 当前目录 
 

配置步骤:

①:查看 ps -ef | grep redis ,如果 redis 服务启动,先停止。

②:修改 redis.conf 文件, 修改前先备份,执行 cp redis.conf bak_redis.conf

查看默认启用的 RDB 文件

③:编辑 redis.conf 增加 save 配置, 修改文件名等。vim redis.conf

修改的内容:

把原来的默认的 dump.rdb 删除,修改 redis.conf 后,重新启动 redis

④:在 20 秒内,修改三个 key 的值

⑤:查看生成的 rdb 文件

1.3)AOF方式持久化

①Redis 每次接收到一条改变数据的命令时,它将把该命令写到一个 AOF 文件中(只记录写操作,读操作不记录),当 Redis 重启时,它通过执行 AOF 文件中所有的命令来恢复数据。

②在同样数据规模时,AOF文件要比RDB文件的体积大。恢复速度要慢于RDB方式。

③Redis 支持在不影响服务的前提下在后台重构 AOF 文件,让文件得以整理变小。比如:做一百次加法计算,最后你只会在数据库里面得到最终的数值,但是在你的 AOF 里面会存在 100 次记录,其中有99 条记录对最终的结果是无用的会被整理掉;

1.3.1)AOF配置过程

AOF 方式的数据持久化,仅需在 redis.conf 文件中配置即可配置项:

①:停止运行的 redis , 备份要修改的 redis.conf

②:查看 redis 安装目录/src 下有无 .aof 文件。 默认是在 redis 的当前目录

③:编辑 redis.conf, appendonly默认是 no,改成 yes 即开启了 aof 持久化 , 查看 appendfilname 的文件名称是appendonly.aof

④:appendfsync:配置向 aof 文件写命令数据的策略:

no:不主动进行同步操作,而是完全交由操作系统来做(即每 30 秒一次),比较快但不是很安全。

always:每次执行写入都会执行同步,慢一些但是比较安全。

everysec:每秒执行一次同步操作,比较平衡,介于速度和安全之间。这是默认项。

⑤:dir : 指定 RDB 和 AOF 文件存放的目录,默认是 ./

⑥:auto-aof-rewrite-min-size:允许重写的最小 AOF 文件大小,默认是 64M 。当 aof 文件大于 64M 时,开始整理 aof文件, 去掉无用的操作命令。缩小 aof 文件。

⑦测试:在 redis 客户端执行 写入命令

查看 aof 文件

相关推荐
qq_529835351 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New3 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6753 小时前
数据库基础1
数据库
我爱松子鱼3 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo4 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser5 小时前
【SQL】多表查询案例
数据库·sql
Galeoto5 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
希忘auto5 小时前
详解Redis在Centos上的安装
redis·centos
人间打气筒(Ada)5 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231115 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql