代码编织梦想

Redis为什么需要持久化?

Redis是内存数据库,为防止意外情况(如停电、宕机),重新找回数据

Redis持久化有两种模式:RDB和AOF模式

RDB(Redis DataBase):把当前数据生成快照保存在硬盘上(二进制新式存储),RDB持久化可以手动触发,也可以自动触发。

手动触发:

第一步:启动Redis Server

进入到Redis Server目录,终端输入 redis-server

d2f59b0306dfc60de0a9963960160ebb.png

第二步:输入客户端命令redis-cli

f2f0970d0d9dab0b2806df34996ac35b.png

第三步:添加数据

8c9007f07c3cc555ef1f115417f35147.png

第四步:停掉Redis服务器

第五步:启动Redis服务器

第六步:查看之前的两条数据还在不在?

934c212ed7a6c0b37d53319e29649cff.png

第七步:重复第三步

第八步:使用savhe或bgsave命令

执行save命令会手动触发RDB持久化,但是save命令会阻塞Redis服务,直到RDB持久化完成。当Redis服务储存大量数据时,会造成较长时间的阻塞,不建议使用

执行bgsave命令也会手动触发RDB持久化,和save命令不同是:Redis服务一般不会阻塞。

文件名是dump.rdp

f7cf4393cd43259712b53082d62d0058.png

注意,redis默认是保存在命令所在目录,你很有可能因为权限问题导致保存失败。配置命令目录的权限允许读写即可。

51005cd0ea42a553222a62730b51e69c.png

第九步:停止Redis

第十步:启动Redis

第十一步:查询key

c198d5e56781d53035d344aa716bcded.png

自动触发

除了执行以上命令手动触发以外,Redis内部可以自动触发RDB持久化。自动触发的RDB持久化都是采用bgsave的方式,减少Redis进程的阻塞。那么,在什么场景下会自动触发呢?

  1. 在配置文件中设置了save的相关配置,如sava m n,它表示在m秒内数据被修改过n次时,自动触发bgsave操作。

  1. 当从节点做全量复制时,主节点会自动执行bgsave操作,并且把生成的RDB文件发送给从节点。

  1. 执行debug reload命令时,也会自动触发bgsave操作。

  1. 执行shutdown命令时,如果没有开启AOF持久化也会自动触发bgsave操作。

0abe4358547f1137ebffb9fc9fc85213.png

RDB优点

RDB文件是一个紧凑的二进制压缩文件,是Redis在某个时间点的全部数据快照。所以使用RDB恢复数据的速度远远比AOF的快,非常适合备份、全量复制、灾难恢复等场景。

RDB缺点

无法做到实时持久化,或者秒级持久化。当Redis 故障时,仍然会有近5 分钟的数据丢失。所以,Redis 还提供了另一种持久化方式,那就是AOF。

AOF(Append Only File):记录每次对数据的操作到硬盘上(操作日志文件)

AOF(Append Only File)持久化是把每次写命令追加写入日志中,当需要恢复数据时重新执行AOF文件中的命令就可以了。AOF解决了数据持久化的实时性,也是目前主流的Redis持久化方式。

AOF持久化流程中的文件重写可以手动触发,也可以自动触发。

  1. 手动触发:使用bgrewriteaof命令。

  1. 自动触发:

根据配置文件的auto-aof-rewrite-min-sizeauto-aof-rewrite-percentage参数确定自动触发时机。

  1. auto-aof-rewrite-min-size:表示运行AOF重写时文件最小体积,默认为64MB,AOF大于64MB就执行重写

  1. auto-aof-rewrite-percentage:代表当前AOF文件空间(aof_current_size)和上一次重写后 AOF 文件空间(aof_base_size)的比值: (aof_current_size-aof_base_size) / aof_base_size >= auto-aof-rewritepercentage

注:aof_current_size 和 aof_base_size 可以在 info Persistence 统计信息中查看。

AOF持久化配置:

a15522cc524a1bfad99754a6b1aa2b94.png

配置信息在xxx.conf第501~615行

开启成功后,你能看到redis目录下有一个appendonly.aof文件,这个文件是一个文本文件,可以使用记事本等打开

e116a49d38eaadae80f2bdb5d23c0eb1.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45834289/article/details/129674439

Redis持久化方案-爱代码爱编程

持久化方式 通常数据库存在三种用于持久操作以防止数据损坏的常见策略: 1.是数据库不关心故障,而是在数据文件损坏后从数据备份或快照中恢复。RDB就是这种情况2.该数据库使用操作日志记录每个操作的操作行为,以在失败后通过日志恢复一致性。由于操作日志是按顺序追加写入的,因此不会出现无法恢复操作日志的情况。类似于Mysql的重做和撤消日志。3.数据库不修改旧

redis(三) 持久化 rdb+aof-爱代码爱编程

哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮 有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。 文章目录 1 RDB持久化1.1 官方介绍:1.2 配置文件1.2.1 Redis 6.0.16

浅谈redis及应用场景-爱代码爱编程

Redis是一种开源的数据存储系统,它被广泛用于高性能、高可扩展性、低延迟的数据存储和缓存。Redis支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等,提供了丰富的操作命令,使得开发人员可以方便地进行数据存储和检

一文教你彻底打败redis bigkey和hotkey问题-爱代码爱编程

前言 bigkey和hotkey是Redis生产中两个比较常见的问题,本文从它们的概念、危害、发现、解决的角度,来分析一下这两个问题。 bigkey 概念 通俗易懂的讲,Big Key就是某个key对应的value很

5.docker入门到精通—安装redis集群(理论)-爱代码爱编程

**面试题:**1-2 亿条数据需要缓存,请问如何设计这个存储案例: **回答:**单机单台 100%不可能,肯定是分布式存储,用 redis 如何落地?(一般业界有 3种 解决方案) 方案一、哈希取余分区 2亿条记录就是 2 亿个 k,v,我们单机不行必须要分 布式多机,假设有 3 台机器构成一

6.docker入门到精通—配置3主3从redis集群-爱代码爱编程

【前提】:docker安装了redis:6.0.8镜像 3主3从redis 集群配置 关闭防火墙+启动 docker 后台服务 systemctl start docker 新建 6 个 docker 容器 redis 实例 docker run -d --name redis-node-1

redis(七):持久化:aof和rdb-爱代码爱编程

前言 上一篇介绍了 Redis 实现消息队列的三种方式。这节开始介绍 Redis 的持久化问题。 我们都知道 Redis 是基于内存的数据库,而内存又是易失性的,一旦遇到断电或异常重启等问题时,内存中的数据就会丢失。所以