当前位置: 首页 > news >正文

Redis数据的持久化

Redis的持久化有两种方式:

RDB(Redis Database)和AOF(Append Only File)

目录

一、RDB

保存方式

2、rdb在redis.conf文件中的配置

二、AOF

1、保存方式

2、aof方式持久化在redis.conf文件中的配置

三、持久化建议

四、单机版-redis部署


一、RDB

保存方式

将Redis数据以快照的形式保存到磁盘中

在RDB方式下,Redis提供了save和bgsave两种方式进行数据持久化。

其中save方式是在主进程中执行,会阻塞所有的客户端请求,直到快照保存完成。

bgsave方式则是通过创建子进程进行数据持久化,并不会阻塞客户端请求。

在save和bgsave中,save会在执行完指定时间内的写操作后进行快照保存,而bgsave则是在指定时间内开启一个子进程进行快照保存。

在save和bgsave中,save会在执行完指定时间内的写操作后进行快照保存,而bgsave则是在指定时间内开启一个子进程进行快照保存。

save 900 1
save 300 10
save 60 10000
redis的持久化操作为什么要保存三次

因为在Redis的持久化过程中,如果只进行一次快照保存,可能会因为系统崩溃或者其他原因导致数据丢失。而多次进行快照保存,可以增加数据的保护程度,降低数据丢失的风险。因此,通常会对持久化操作进行多次保存,在上述的示例中,就是在900秒、300秒和60秒后分别进行一次快照保存。

2、rdb在redis.conf文件中的配置

dir /a/b/c

#该名称会在dir目录下生成

dbfilename dump.rdb

rdbcompression yes

#rdbcompression指定是否开启rdb文件的压缩存储,默认为yes,开启压缩存储后可以减小RDB文#件的大小,但会增加cpu的使用量。

二、AOF

1、保存方式

将Redis的每个写操作以追加的方式记录到AOF文件中,这样在redis重启时可以通过重新执行AOF文件中记录的写操作来恢复数据

2、aof方式持久化在redis.conf文件中的配置

dir /a/b/c

#开启AOF持久化方式

appendonly yes

#文件名

appendfilename "appendonly-41.aof"

三、持久化配置-建议

在配置redis.conf时,可以同时配置rdb和aof两种格式的持久化操作吗,有什么推荐?

可以同时配置RDB和AOF两种格式的持久化操作,因为它们各有优缺点,可以根据实际情况选择合适的持久化方式。

RDB持久化方式可以将Redis数据库在指定的时间间隔内生成快照,并将快照保存到硬盘上。快照保存的是Redis数据库在某个时间点的数据,可以保证数据的完整性。但是,如果Redis服务器在快照生成之后崩溃,最后一次快照生成之后的新写入数据将会丢失。

AOF持久化方式可以将Redis数据库中所有的写命令记录在追加文件中,当Redis服务器重启时,可以通过重新执行AOF文件中的所有命令来还原数据。AOF持久化方式可以更好地保证数据的一致性,但是由于需要记录每个写命令,所以AOF文件通常比RDB文件更大,重启时也需要更长的时间来还原数据。

根据业务的需求和实际情况,可以选择RDB、AOF或RDB与AOF的组合持久化方式。如果数据的完整性比较重要,可以使用RDB方式;如果数据的一致性比较重要,可以使用AOF方式;如果既要保证数据的完整性,又要保证数据的一致性,可以使用RDB与AOF的组合方式。一般来说,建议使用AOF持久化方式,因为它更能保证数据的一致性。

四、单机版-redis部署

https://blog.csdn.net/Isonion/article/details/134442807?spm=1001.2014.3001.5501

相关文章:

  • SpringCloud Alibaba详解
  • NoSQL 与传统数据库的集成
  • WPF中如何在MVVM模式下关闭窗口
  • 大数据Doris(二十六):数据导入(Routine Load)介绍
  • 【大数据分布并行处理】单元测试(五)
  • Spring中有哪几种方法获取HttpSession对象
  • 4 redis的HyperLogLog入门原理
  • java发送媒体类型为multipart/form-data的请求
  • 云课五分钟-0Cg++默认版本和升级-std=c++17
  • 将 Fedora 38 平滑升级至 Fedora 39
  • 工厂设计模式
  • 聊聊logback的MDCFilter
  • CSS英文单词强制截断换行
  • Redisson 分布式锁实战应用解析
  • 【2017年数据结构真题】
  • Bootstrap JS插件Alert源码分析
  • Effective Java 笔记(一)
  • egg(89)--egg之redis的发布和订阅
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTTP中的ETag在移动客户端的应用
  • JavaScript 一些 DOM 的知识点
  • JavaScript的使用你知道几种?(上)
  • LeetCode18.四数之和 JavaScript
  • Linux gpio口使用方法
  • Puppeteer:浏览器控制器
  • Shell编程
  • webpack+react项目初体验——记录我的webpack环境配置
  • 那些年我们用过的显示性能指标
  • 深入浏览器事件循环的本质
  • 鱼骨图 - 如何绘制?
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #pragma预处理命令
  • $NOIp2018$劝退记
  • (02)vite环境变量配置
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)德国人的记事本
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .Net FrameWork总结
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET中GET与SET的用法
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /proc/stat文件详解(翻译)
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @RequestMapping处理请求异常
  • [04] Android逐帧动画(一)