Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用

Java缓存面试题——Redis应用 1、为什么要使用Redis做缓存?2、为什么Redis单线程模型效率也能那么高?3、Redis6.0为什么要引入多线程呢?4、Redis常见数据结构以及使用场景字符串(String)哈希(Hash)列表(list)集合(set)有序集合(ZSET)5、pipeline有什么好处,为什么要用pipeline?6、Redis官方为什么不提供Windows版本?7、Redis持久化方式有哪些?以及有什么区别?RDBAOF8、什么是Redis事务?原理是什么?9、如何在100个亿URL中快速判断某URL是否存在?传 阅读详情

本文转载自:Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用


Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。

Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件)

一、RDB(Redis DataBase)

1. 是什么

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB 方式要比 AOF 方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

? What ? Redis 不是单进程的吗?

Redis 使用操作系统的多进程 COW(Copy On Write) 机制来实现快照持久化, fork是类Unix操作系统上创建进程的主要方法。COW(Copy On Write)是计算机编程中使用的一种优化策略。

2. Fork

fork 的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。 子进程读取数据,然后序列化写到磁盘中

rdb 默认保存的是dump.rdb文件

你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。

你也可以通过调用 SAVE 或者 BGSAVE , 手动让 Redis 进行数据集保存操作。

比如说, 以下设置会让 Redis 在满足“ 60 秒内有至少有 1000 个键被改动”这一条件时, 自动保存一次数据集:

save 60 1000

这种持久化方式被称为快照(snapshot)。

配置位置: SNAPSHOTTING

3. 如何触发RDB快照

①. 配置文件中默认的快照配置

冷拷贝后重新使用 可以cp dump.rdb dump_new.rdb

②. 命令save或者是bgsave

  • Save:save时只管保存,其它不管,全部阻塞
  • BGSAVE:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间
  • 执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义

4. 快照的运作方式]

当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作:

①. Redis 调用 fork() ,产生一个子进程,此时同时拥有父进程和子进程。

②. 子进程将数据集写入到一个临时 RDB 文件中。

③. 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。

这种工作方式使得 Redis 可以从写时复制(copy-on-write)机制中获益。

5. 如何恢复

将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可(CONFIG GET dir获取目录)

6. 优势

①. 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的。比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。适合大规模的数据恢复

②. 对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。

③. 性能最大化。对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO操作了。

④. 相比于AOF机制,如果数据集很大,RDB的启动效率会更高。

7. 劣势

①. 如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失(丢失最后一次快照后的所有修改)。

②. 由于RDB是通过fork子进程来协助完成数据持久化工作的,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。

8. 如何停止

动态停止RDB保存规则的方法:redis-cli config set save ""

9. 总结

①. RDB是一个非常紧凑的文件

②. RDB在保存RDB文件时父进程唯一需要做的就是fork出一个子进程,接下来的工作全部由子进程来做,父进程不需要再做其他IO操作,所以RDB持久化方式可以最大化redis的性能

③. 与AOF相比,在恢复大的数据集的时候,RDB方式会更快一些

④. 数据丢失风险大

⑤. RDB需要经常fork子进程来保存数据集到硬盘上,当数据集比较大的时候,fork的过程是非常耗时的,可能会导致redis在一些毫秒级不能响应客户端的请求

二、AOF(Append Only File)

1. 是什么

以日志的形式来记录每个写操作,将 Redis 执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis 启动之初会读取该文件重新构建数据,也就是「重放」。换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

AOF 默认保存的是 **appendonly.aof ** 文件

配置位置: APPEND ONLY MODE

2. AOF启动/修复/恢复

正常恢复

  • 启动:设置Yes 修改默认的appendonly no,改为yes
  • 将有数据的 aof 文件复制一份保存到对应目录(config get dir)
  • 恢复:重启redis然后重新加载

异常恢复

  • 启动:设置Yes 修改默认的appendonly no,改为yes
  • 备份被写坏的AOF文件
  • 修复:redis-check-aof --fix进行修复 + AOF文件
  • 恢复:重启redis然后重新加载

3. rewrite(AOF 重写)

①. 是什么:AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,当 AOF 文件的大小超过所设定的阈值时,Redis就会启动 AOF 文件的内容压缩,只保留可以恢复数据的最小指令集,可以使用命令bgrewriteaof

②. 重写原理:AOF 文件持续增长而过大时,会 fork 出一条新进程来将文件重写(也是先写临时文件最后再rename),遍历新进程的内存中数据,每条记录有一条的 Set 语句。重写 aof 文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的 aof 文件,这点和快照有点类似

③. 触发机制:Redis 会记录上次重写时的 AOF 大小,默认配置是当 AOF 文件大小是上次 rewrite 后大小的一倍且文件大于64M 时触发

4. AOF耐久性

你可以配置 Redis 多久才将数据 fsync 到磁盘一次。

有三个选项:

  • 每次有新命令追加到 AOF 文件时就执行一次 fsync :非常慢,也非常安全。
  • 每秒 fsync 一次:足够快(和使用 RDB 持久化差不多),并且在故障时只会丢失 1 秒钟的数据。
  • 从不 fsync :将数据交给操作系统来处理。更快,也更不安全的选择。

推荐(并且也是默认)的措施为每秒 fsync 一次, 这种 fsync 策略可以兼顾速度和安全性。

总是 fsync 的策略在实际使用中非常慢,频繁调用 fsync 注定了这种策略不可能快得起来。

5. 如果 AOF 文件出错了,怎么办?

服务器可能在程序正在对 AOF 文件进行写入时停机, 如果停机造成了 AOF 文件出错(corrupt), 那么 Redis 在重启时会拒绝载入这个 AOF 文件, 从而确保数据的一致性不会被破坏。

当发生这种情况时, 可以用以下方法来修复出错的 AOF 文件:

①. 为现有的 AOF 文件创建一个备份。

②. 使用 Redis 附带的 redis-check-aof 程序,对原来的 AOF 文件进行修复。

$ redis-check-aof --fix

①. (可选)使用 diff -u 对比修复后的 AOF 文件和原始 AOF 文件的备份,查看两个文件之间的不同之处。

②. 重启 Redis 服务器,等待服务器载入修复后的 AOF 文件,并进行数据恢复。

6. AOF运作方式

AOF 重写和 RDB 创建快照一样,都巧妙地利用了写时复制机制。

以下是 AOF 重写的执行步骤:

  • Redis 执行 fork() ,现在同时拥有父进程和子进程。
  • 子进程开始将新 AOF 文件的内容写入到临时文件。
  • 对于所有新执行的写入命令,父进程一边将它们累积到一个内存缓存中,一边将这些改动追加到现有 AOF 文件的末尾: 这样即使在重写的中途发生停机,现有的 AOF 文件也还是安全的。
  • 当子进程完成重写工作时,它给父进程发送一个信号,父进程在接收到信号之后,将内存缓存中的所有数据追加到新 AOF 文件的末尾。
  • 搞定!现在 Redis 原子地用新文件替换旧文件,之后所有命令都会直接追加到新 AOF 文件的末尾。

7. 优势

  • 该机制可以带来更高的数据安全性,即数据持久性。Redis中提供了3种同步策略,即每秒同步、每修改同步和不同步。事实上,每秒同步也是异步完成的,其效率也是非常高的,所差的是一旦系统出现宕机现象,那么这一秒钟之内修改的数据将会丢失。而每修改同步,我们可以将其视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中。可以预见,这种方式在效率上是最低的。至于无同步,无需多言,我想大家都能正确的理解它。
  • 由于该机制对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。
  • 如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite切换时可以更好的保证数据安全性。
  • AOF 包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。因此 AOF 文件的内容非常容易被人读懂, 对文件进行分析(parse)也很轻松。 导出(export) AOF 文件也非常简单: 举个例子, 如果你不小心执行了 FLUSHALL 命令, 但只要 AOF 文件未被重写, 那么只要停止服务器, 移除 AOF 文件末尾的 FLUSHALL 命令, 并重启 Redis , 就可以将数据集恢复到 FLUSHALL 执行之前的状态。

8. 劣势

  • 对于相同数量的数据集而言,AOF文件通常要大于RDB文件。恢复速度慢于rdb。
  • 根据同步策略的不同,AOF在运行效率上往往会慢于RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。

9. 总结

  • AOF 文件是一个只进行追加的日志文件
  • Redis 可以在 AOF 文件体积变得过大时,自动在后台对 AOF 进行重写
  • AOF文件有序的保存了对数据库执行的所有写入操作,这些写入操作以Redis协议的格式保存,因此AOF文件的内容非常容易被人读懂,对文件进行分析也很轻松
  • 对于相同的数据集来说,AOF 文件的体积通常需要大于 RDB 文件的体积
  • 根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB

10. 怎么从 RDB 持久化切换到 AOF 持久化

在 Redis 2.2 或以上版本,可以在不重启的情况下,从 RDB 切换到 AOF :

  • 为最新的 dump.rdb 文件创建一个备份。
  • 将备份放到一个安全的地方。
  • 执行以下两条命令:
 redis-cli> CONFIG SET appendonly yes     

 redis-cli> CONFIG SET save "" 
  • 确保命令执行之后,数据库的键的数量没有改变。
  • 确保写命令会被正确地追加到 AOF 文件的末尾。

步骤 3 执行的第一条命令开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾。

步骤 3 执行的第二条命令用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能。

别忘了在 redis.conf 中打开 AOF 功能! 否则的话, 服务器重启之后, 之前通过 CONFIG SET 设置的配置就会被遗忘, 程序会按原来的配置来启动服务器。

三、Which one

①. RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储

②. AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以 redis 协议追加保存每次写的操作到文件末尾。Redis还能对AOF文件进行后台重写(bgrewriteaof),使得 AOF 文件的体积不至于过大

③. 只做缓存:如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式。

④. 同时开启两种持久化方式

  • 在这种情况下,当 redis 重启的时候会优先载入 AOF 文件来恢复原始的数据,因为在通常情况下 AOF 文件保存的数据集要比 RDB 文件保存的数据集要完整。
  • RDB 的数据不实时,同时使用两者时服务器重启也只会找 AOF 文件。那要不要只使用AOF 呢?建议不要,因为 RDB 更适合用于备份数据库(AOF 在不断变化不好备份),快速重启,而且不会有 AOF 可能潜在的bug,留着作为一个万一的手段。

1. 性能建议

  • 因为 RDB 文件只用作后备用途,建议只在 Slave上持久化 RDB 文件,而且只要15分钟备份一次就够了,只保留save 900 1这条规则。
  • 如果Enalbe AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的 AOF 文件就可以了。代价一是带来了持续的 IO,二是 AOF rewrite 的最后将 rewrite 过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少 AOF rewrite 的频率,AOF 重写的基础大小默认值64M太小了,可以设到5G以上。默认超过原大小100%大小时重写可以改到适当的数值。
  • 如果不 Enable AOF ,仅靠 Master-Slave Replication 实现高可用性也可以。能省掉一大笔 IO ,也减少了rewrite 时带来的系统波动。代价是如果 Master/Slav e同时宕掉,会丢失十几分钟的数据,启动脚本也要比较两个Master/Slave中的RDB文件,载入较新的那个。

本文转载自:Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用

Redis持久化技术AOF要点与详细解答 AOF用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。收到客户端的写入命令(例如SET、DEL等)之后,它会将命令写入AOF缓冲区。redis服务器会定期或者在特定条件下,将AOF缓冲区的数据以追加的方式写到日志文件末尾,这种写入的操作可以是同步的,也可以是异步的,具体看我们配置的刷盘机制。若日志文件超过配置文件的大小(由配置参数和。 阅读详情

相关推荐

Redis第二讲:Redis进阶与实战/持久化机制/分布式锁/Redis集群/设计模式/缓存击穿和缓存雪崩/事务机制

redis进阶与实战 摘要:本文是redis的进阶与实战部分,主要讲解redis的持久化机制,分布式锁,redis集群(主从模式)以及其设计模式,缓存击穿和缓存雪崩,redis的缓存降级/缓存限流,redis的事务机制,最后是redis的java客户端jedis。 1、Redis持久化机制(RDB和AOF)如何做高可用、集群 1、什么是redis的持久化技术 在指定的时间间隔内将内存中的数.....................

Jet_qi的博客 731

【Java 基础篇】Java持久化详解

本文详细介绍了Java持久化的概念、持久化技术的种类和使用方法。通过文件存储、数据库存储、对象关系映射和缓存存储等技术,可以实现数据的持久化。持久化是一种重要的机制,可以确保数据的可靠性和持久性。希望本文对你理解和应用Java持久化有所帮助!

繁依Fanyi的博客 4324

【最全】ISTQB- FL模拟题(含答案)

汇总收集的所有ISTQB基础级考题和答案

maoxuexue的博客 1万+

java redis缓存持久化_Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用...

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。...

weixin_35915120的博客 417

7-15 估值一亿的AI核心代码

函数封装,含一个字符串中的所有的某个字串全部替换成另一个的函数,还有判断是否独立的函数以上图片来自新浪微博。!

weixin_73529240的博客 601

泛微E10 eBuilder低代码平台避坑指南:新手最容易犯的5个错误及解决方案

本文针对泛微E10 eBuilder低代码平台的新手开发者,总结了5个最常见错误及解决方案,包括表单联动配置、流程设计权限、动作流时序、数据加工类型转换和权限管理过度配置等问题。通过实战经验和代码示例,帮助开发者避开常见陷阱,提升开发效率。

weixin_30919429的博客 540

java 本地 持久化队列_GitHub - cheeseleng/cockburst: 一个高性能,可靠,异步的本地持久化队列实现;重启JVM、重启服务器、或者强制KILL进程时,队列里的数据不丢失...

cockburst一个高性能,可靠,异步的本地持久化队列;可以做到重启JVM、重启服务器、或者强制KILL进程时,队列里的数据不丢失,下次启动应用时,仍可以继续消费;当然,天有不测风云,在机器由于不可抗拒的原因---例如断电,地震,机房着火,网管跑路,也是会有丢数据的风险的;背景很多时候,我们都会通过blockqueue来提高系统的吞吐量,解耦流程---也就是生产者,消费者模式;但因为blockq...

weixin_29970399的博客 1406

N32串口DMA接收不定长数据:空闲中断与DMA通道的协同处理

本文详细解析了在N32系列MCU中,利用串口空闲中断与DMA通道协同处理不定长数据的核心机制与实战方法。通过剖析空闲中断的触发时机、DMA的配置要点以及两者协同工作的关键时序,提供了避免数据错乱的避坑指南和完整的代码实现,旨在帮助开发者构建高效、可靠的嵌入式串口通信子系统。

weixin_29191669的博客 123

Redis集群(分布式缓存):详解持久化、主从同步原理、哨兵机制、Cluster分片集群,实现高并发高可用

Redis集群(分布式缓存):详解持久化、主从同步原理、哨兵机制、Cluster分片集群

qurious7的博客 2669

TensorRT-LLM环境配置避坑指南:从安装到实战

本文是一份详尽的TensorRT-LLM环境配置避坑指南。文章重点解析了从Python、CUDA、PyTorch版本选择,到解决mpi4py安装这一核心难题的完整流程,并提供了经过验证的稳定版本组合与实战排错方案,帮助开发者高效部署大语言模型推理优化环境。

a0b1c2d3的专栏 983

激光除草技术原理与应用全解析

激光除草技术通过光热、光化学等效应精准破坏杂草组织,核心参数包括功率(20-6000W)、波长(400nm-10.6μm)和脉冲宽度。主要应用于大田作物(如玉米、棉花)、经济作物(烟草、果树)及城市绿化,具有环保(无化学污染)、高效(识别率≥95%)和非接触等优势,但存在设备成本高(20-50万元)、技术门槛高等局限。当前技术融合AI识别、多光谱协同等创新,国产设备如华工智耘已实现95.3%识别精度。虽短期投入较高,但长期可降低30%除草成本,并带来环境效益(每亩减排1.2吨CO₂)

start_up_go的博客 556

java缓存详解

缓存

yushan125的博客 3328

(代码可运行)半导体器件和工艺模拟 使用Silvaco设计构建NMOS并提取各项工艺及器件参数

win10。

qq_20388971的博客 109

执行一次怎么会写入两次数据_Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用

Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件)一、RDB(Redis DataBase)1. 是什么在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件...

weixin_39858245的博客 382

复现论文《基于Retinex理论和深度学习的低照度图像增强算法研究》

本研究提出两种基于Retinex理论和深度学习的低照度图像增强算法。第一种算法在HSV色彩空间中进行处理,采用Res2Block和CBAM-Res2block模块增强多尺度特征表示;第二种算法使用多尺度残差U型网络结构。复现代码展示了Res2Block、CBAM注意力机制等核心模块的实现,包括多尺度特征提取、通道和空间注意力机制。实验结果表明,所提算法能有效解决低照度图像存在的亮度低、对比度不足、颜色失真和细节丢失等问题,显著提升图像质量。

max500600的博客 388

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

c++为什么每次保存新数据会覆盖旧数据_Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用...

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注# 链接 Java程序员福利"常用资料分享"Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢...

weixin_28872105的博客 492

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java缓存机制

1 Java缓存 1.1 jvm内置缓存 Java中实现缓存的方式有很多,比如用static hashMap基于内存缓存的jvm内置缓存,简单不实用,保对象的有效性和周期无法控制,容易造成内存急剧上升。常用的有Oscache(主要针对jsp页面),Ehcache(主要针对数据库访问层),Jcache,Jbosscache等等很多 缺点:容易内存溢出、没有持久化(服务重启后丢失)、线程安全、多...

losemyfuture的博客 6万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java高性能开发实战(1)——Redis 7 持久化机制

Redis是一个基于内存的数据库,这意味着其主要数据存储和操作均在内存中进行。这种设计使得Redis能够提供极快的读写速度(通常达到微秒级别),适用于高性能场景,如缓存然而,由于内存的易失性(断电后数据会丢失),Redis提供了持久化机制:将内存中的数据保存到磁盘中,确保数据在Redis服务重启或崩溃后能够恢复。通过持久化,可以避免数据丢失,提高数据的可靠性Redis提供两种持久化方式:生成数据集的快照实现持久化:记录所有写操作命令,以追加方式写入文件。

2401_89167985的博客 9160

Redis的缓存机制和淘汰策略详解

本文深入解析Redis缓存机制与淘汰策略,为Java开发者提供生产环境优化指南。核心内容包括:1. Redis三大机制(内存键值存储、持久化、缓存管理)协同保障高性能与数据安全;2. 详解8种淘汰策略,重点推荐volatile-lru(带过期时间的LRU)作为主流选择;3. 实战选型方法论,根据数据类型、热点程度、一致性要求等维度匹配最佳策略;4. 集群环境配置要点与maxmemory设置建议(服务器内存的50%-70%)。强调淘汰策略需结合业务特性,平衡内存、CPU与命中率,避免教条化应用。

2401_85059682的博客 1055

Java学习——Redis学习总结(一文搞定入门到精通)

本文是我在日常学习中对redis方面学习的全面总结,分为三大模块。1. 入门篇总结了redis的基础知识,限于入门redis,省略了redis的安装和客户端基础命令操作,着重与java客户端以及在java环境下如何操作redis2. 进阶篇总结了redis的持久化,分布式锁,缓存,简单写了一点事务相关方面,没有总结集群,高级数据结构应用等,因为没有总结的方面我平时开发过程中用到的也甚少,了解不全面。3. 应用篇则列举了我在日常开发中用到redis的使用场景。

duehebfbf的博客 2487

Redis持久化机制及缓存失效解决方案

Redis集群故障监测及哨兵机制原理解析 Redis海量数据存储方案Redis Cluster 前言 在之前的文章写过redis的实用功能,包括数据结构,主从复制结构,以及应对高并发海量数据场景下的分片redis cluster 集群;本篇文章继续学习redis框架应对缓存失效,以及持久化机制及内存管理出现的问题,以及提供的解决方案及思想。 概述 在redis中缓存失效的原因主要是重启导致数据失效, 解决方案 RDB、AOF持久化机制。以及aof中为什么能保证数据在断电或重启不失效的原因,提供不同的

踩踩踩从踩的博客 3591

【Java 进阶】深入理解Redis:从基础应用到进阶实践全解析

Redis作为高性能键值数据库,已成为分布式系统核心组件。本文系统介绍Redis从基础到进阶的核心技术,包括内存存储、多数据结构支持等特性,以及Linux环境下的安装配置方法。重点解析字符串、哈希、列表等核心数据结构的操作命令及Java代码示例,帮助开发者掌握Redis在缓存、消息队列等场景的高效应用。文章采用总分总结构,结合理论与实践,为读者提供全面的Redis学习指南。

CodeSuc 的技术博客 1063

Redis面试精讲 Day 3:Redis持久化机制详解

Redis持久化是指将内存中的数据以特定格式保存到磁盘的过程,目的是在Redis服务重启后能够恢复数据。Redis提供了两种主要的持久化方式:| 持久化方式 | 原理 | 数据安全性 | 恢复速度 || RDB | 定时生成内存快照 | 可能丢失最后一次快照后的数据 | 快 || AOF | 记录所有写操作命令 | 通常最多丢失1秒数据 | 慢 |RDB通过快照实现持久化,适合备份和快速恢复AOF记录写命令,提供更好的数据安全性混合持久化结合了两者优势,是推荐的配置方式。

在未来等你的专栏 1248

Redis 详解

Redis 详解1. 什么是 Redis2. Redis 基本使用3. Redis 数据结构2.1 String2.2 List2.3 Hash(字典)2.4 Set(集合)2.5 zset(有序集合)4. Redis 持久化5. Redis 集群6. Redis 经典运用6.1 分布式锁 1. 什么是 Redis   Redis 是一个基于内存的高性能 key-value 数据库。是完全开源免费的,用C语言编写的,遵守BSD协议。   Redis 特定: Redis 是基于内存操作的,吞吐量非常高,可以

weixin_44981707的博客 1万+

一文搞懂 Redis 的 RDB、AOF 以及混合持久化机制

Redis ⽀持 RDB 和 AOF 两种持久化机制,Redis 4.0 之后又新增了混合持久化的方式。持久化功能有效地避免因进程退出造成数据丢失问题,当下次重启时利用之前持久化的⽂件即可实现数据恢复。

whf1215847706的专栏 1046

Java面试-Redis 持久化机制:RDB 与 AOF

本文深入剖析Redis两大持久化机制——RDB与AOF,从技术原理到生产实践。RDB通过全量快照实现高效备份,利用CoW技术保证off主线程操作;AOF通过增量管理局志保障数据安全,支持多种fsync策略。文章对比显示:RDB恢复快但可能丢数据ft数据,AOF更安全但恢复较耗时间。文章推荐混合模式(RDB+AOF)作为最佳实践,并附配置模板与故障演练方案,帮助开发者构建高可靠的Redis数据存储方案。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: 历尽数月,终于整理出一份让你涨薪8K的Java基础面试题解析
下一篇: 阿里的大佬,在看完火神山的直播后,写了这篇MySQL性能优化
Java_supermanNO1
博客等级 码龄7年 1170粉丝 329原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值