Redis的持久化方案 、redis的缓存过期策略与内存淘汰机制

Redis过期策略内存淘汰机制、持久化 、备份与恢复 、事务 、管道技术 、发布与订阅等知识点详解 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级 redis过期策略及内存淘汰机制 Redis持久化 Redis备份与恢复 Redis事务 键管理方法 Redis管道技术 Redis发布与订阅 Redis脚本 阅读详情

redis的持久化方案

从严格意义上说,Redis服务提供四种持久化存储方案:RDB、AOF、虚拟内存(VM)和 DISKSTORE。虚拟内存(VM)方式,从Redis Version 2.4开始就被官方明确表示不再建议使用,Version 3.2版本中更找不到关于虚拟内存(VM)的任何配置范例,Redis的主要作者Salvatore Sanfilippo还专门写了一篇论文,来反思Redis对虚拟内存(VM)存储技术的支持问题。

至于DISKSTORE方式,是从Redis Version 2.8版本开始提出的一个存储设想,到目前为止Redis官方也没有在任何stable版本中明确建议使用这用方式。在Version 3.2版本中同样找不到对于这种存储方式的明确支持。从网络上能够收集到的各种资料来看,DISKSTORE方式和RDB方式还有着一些千丝万缕的联系,不过各位读者也知道,除了官方文档以外网络资料很多就是大抄。

最关键的是目前官方文档上能够看到的Redis对持久化存储的支持明确的就只有两种方案(https://redis.io/topics/persistence):RDB和AOF。所以本文也只会具体介绍这两种持久化存储方案的工作特定和配置要点。

RDB

RDB中文名为快照/内存快照,它的过程很好理解,就是Redis按照一定的时间周期将目前服务中的所有数据全部写入到磁盘中。但这个过程说起简单,实际上呢有很多细节需要被处理。Redis主配置文件的“REPLICATION”部分,放置了对这个过程的配置选项。

这里写图片描述

上图反映了内存快照的大致过程,由于生产环境中我们为Redis开辟的内存区域都比较大(例如6GB),那么将内存中的数据同步到硬盘的过程可能就会持续比较长的时间,而实际情况是这段时间Redis服务一般都会收到数据写操作请求。那么如何保证数据一致性呢?RDB中的核心思路是Copy-on-Write,来保证在进行快照操作的这段时间,需要压缩写入磁盘上的数据在内存中不会发生变化。在正常的快照操作中,一方面Redis主进程会fork一个新的快照进程专门来做这个事情,这样保证了Redis服务不会停止对客户端包括写请求在内的任何响应。另一方面这段时间发生的数据变化会以副本的方式存放在另一个新的内存区域,待快照操作结束后才会同步到原来的内存区域。

另一个问题是,在进行快照操作的这段时间,如果发生服务崩溃怎么办?很简单,在没有将数据全部写入到磁盘前,这次快照操作都不算成功。如果出现了服务崩溃的情况,将以上一次完整的RDB快照文件作为恢复内存数据的参考。也就是说,在快照操作过程中不能影响上一次的备份数据。Redis服务会在磁盘上创建一个临时文件进行数据操作,待操作成功后才会用这个临时文件替换掉上一次的备份。

以下是Redis中关于内存快照的主要配置信息:

快照周期:内存快照虽然可以通过技术人员手动执行SAVE或BGSAVE命令来进行,但生产环境下多数情况都会设置其周期性执行条件。Redis中默认的周期新设置如下:

周期性执行条件的设置格式为

save <seconds> <changes>
# 默认的设置为:
save 900 1
save 300 10
save 60 10000
# 以下设置方式为关闭RDB快照功能
save ""

以上三项默认信息设置代表的意义是:如果900秒内有1条Key信息发生变化,则进行快照;如果300秒内有10条Key信息发生变化,则进行快照;如果60秒内有10000条Key信息发生变化,则进行快照。读者可以按照这个规则,根据自己的实际请求压力进行设置调整。

stop-writes-on-bgsave-error:上文提到的在快照进行过程中,主进程照样可以接受客户端的任何写操作的特性,是指在快照操作正常的情况下。如果快照操作出现异常(例如操作系统用户权限不够、磁盘空间写满等等)时,Redis就会禁止写操作。这个特性的主要目的是使运维人员在第一时间就发现Redis的运行错误,并进行解决。一些特定的场景下,您可能需要对这个特性进行配置,这时就可以调整这个参数项。该参数项默认情况下值为yes,如果要关闭这个特性,指定即使出现快照错误Redis一样允许写操作,则可以将该值更改为no。

rdbcompression:该属性将在字符串类型的数据被快照到磁盘文件时,启用LZF压缩算法。Redis官方的建议是请保持该选项设置为yes,因为“it’s almost always a win”。

rdbchecksum:从RDB快照功能的version 5 版本开始,一个64位的CRC冗余校验编码会被放置在RDB文件的末尾,以便对整个RDB文件的完整性进行验证。这个功能大概会多损失10%左右的性能,但获得了更高的数据可靠性。所以如果您的Redis服务需要追求极致的性能,就可以将这个选项设置为no。

dbfilename:RDB文件在磁盘上的名称。

dir:RDB文件的存储路径。默认设置为“./”,也就是Redis服务的主目录。

AOF

由于是周期性的同步,所以RDB存在的最大问题就是在Redis异常崩溃,需要从最近一次RDB文件恢复数据时,常常出现最近一批更新的数据丢失,而且根据快照的周期设置,这批数据的总量还可能比较大。另外,虽然使用专门的快照进程进行快照数据同步的方式,本身不会造成Redis服务出现卡顿。但如果需要快照的数据量特别大,操作系统基本上会将CPU资源用到快照操作上去,这可能间接造成包括Redis主进程在内的其它进程被挂起。所以,以一个较大的时间周期全部同步Redis数据状态的快照方式,在非常高并发的情况下并不是最好的解决方法。

虽然RDB快照基本上可以应付我们遇到的大多数业务场景,也可以满足至少80%业务系统设计时的预想性能压力,但为了尽可能解决RDB的工作缺陷,Redis还是提供了另一种数据持久化方式——AOF。AOF全称是Append Only File,从字面上理解就是“只进行增加的文件”。我们在介绍InnoDB的工作过程时,也介绍了类似“只进行增加的文件”,就是InnoDB中最关键的重做日志。

在物理磁盘的操作无论是机械磁盘还是固态磁盘,使用顺序读写都将获得比随机读写好得多的I/O性能。所以我们可以看到无论是关系型数据库、NoSQL数据库还是之前的业务案例,无一例外都追求在物理磁盘上尽可能进行顺序读写操作。

AOF方式的核心设计思量可以总结为一句话:忠实记录Redis服务启动成功后的每一次影响数据状态的操作命令,以便在Redis服务异常崩溃的情况出现时,可以按照这些操作命令恢复数据状态。既然要记录每次影响数据状态的操作命令,就意味着AOF文件会越来越大!这是必然的。还好Redis为AOF提供了一种重写AOF文件的功能,保证了AOF文件中可以存储尽可能少的操作命令就能保证数据恢复到最新状态,这个功能被称为日志重写功能(请注意这可不是我们在讲解InnoDB时提到的重做日志)。

举个例子,操作人员在Redis中设置了一个K-V结构:mykey3 = yinwenjie,之后有删除了这个Key信息。那么AOF文件中记录的动作可能如下所示(AOF文件中的内容可以直接通过各种文本编辑工具直接查看):

cat ./appendonly.aof

......
*3
$3
SET
$6
mykey3
$12
yinwenjie111
......
*2
$3
del
$6
mykey3
......

可以看到以上AOF文件中的内容,如实记录了这两个操作:设置Key和删除Key。但是这种日志记录过程对恢复Key的信息没有任何帮助,因为“mykey3”这个Key信息注定在最新的Redis内存中是不存在的。所以一旦我们运行“重写日志”命令(可以是设定的条件也可以直接运行“BGREWRITEAOF”命令),那么整理后的AOF文件的内容可能就是如下所示了:

# cat ./appendonly.aof
......
......

在AOF文件中对mykey3这个Key信息的操作过程记录消失了!这不但缩小了AOF文件还没有对数据恢复过程造成任何困扰。Redis主配置文件中关于AOF功能的设定可以在“APPEND ONLY MODE”部分找到:

以下是Redis中关于AOF的主要配置信息:

appendonly:默认情况下AOF功能是关闭的,将该选项改为yes以便打开Redis的AOF功能。

appendfilename:这个参数项很好理解了,就是AOF文件的名字。

appendfsync:这个参数项是AOF功能最重要的设置项之一,主要用于设置“真正执行”操作命令向AOF文件中同步的策略。
  appendfsync参数项可以设置三个值,分别是:always、everysec、no,默认的值为everysec。

always参数值,会使得AOF对数据的保存非常稳健。其设置意义是只要有一个写操作命令执行成功,就执行一次fsync函数调用。所以很显然always的设定值,就是三个选项值中处理效率最慢的。

no参数值,这个设置值表示Redis不会将执行成功的操作命令正真刷入AOF文件,而是完成操作系统级别的写操作后就认为AOF文件记录成功了,后续的I/O操作完全依赖于操作系统的设定,一般30秒会刷一次。

everysec参数值,这是默认的设置值,也是可以在数据稳健性和性能上平衡较好策略。它表示每秒钟都做一次fsync函数调用,正真做AOF文件的写入操作。

no-appendfsync-on-rewrite:always和everysec的设置会使真正的I/O操作高频度的出现,甚至会出现长时间的卡顿情况,这个问题出现在操作系统层面上,所有靠工作在操作系统之上的Redis是没法解决的。为了尽量缓解这个情况,Redis提供了这个设置项,保证在完成fsync函数调用时,不会将这段时间内发生的命令操作放入操作系统的Page Cache(这段时间Redis还在接受客户端的各种写操作命令)。

auto-aof-rewrite-percentage:上文说到在生产环境下,技术人员不可能随时随地使用“BGREWRITEAOF”命令去重写AOF文件。所以更多时候我们需要依靠Redis中对AOF文件的自动重写策略。Redis中对触发自动重写AOF文件的操作提供了两个设置:auto-aof-rewrite-percentage表示如果当前AOF文件的大小超过了上次重写后AOF文件的百分之多少后,就再次开始重写AOF文件。例如该参数值的默认设置值为100,意思就是如果AOF文件的大小超过上次AOF文件重写后的1倍,就启动重写操作。

auto-aof-rewrite-min-size:参考auto-aof-rewrite-percentage选项的介绍,auto-aof-rewrite-min-size设置项表示启动AOF文件重写操作的AOF文件最小大小。如果AOF文件大小低于这个值,则不会触发重写操作。注意,auto-aof-rewrite-percentage和auto-aof-rewrite-min-size只是用来控制Redis中自动对AOF文件进行重写的情况,如果是技术人员手动调用“BGREWRITEAOF”命令,则不受这两个限制条件左右。

redis的缓存过期策略与内存淘汰机制

过期策略

我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时,我们自己可以指定缓存到期就失效。

如果假设你设置一个一批key只能存活1个小时,那么接下来1小时后,redis是怎么对这批key进行删除的?

答案是:定期删除+惰性删除

所谓定期删除,指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。

注意,这里可不是每隔100ms就遍历所有的设置过期时间的key,那样就是一场性能上的灾难。

实际上redis是每隔100ms随机抽取一些key来检查和删除的。

但是,定期删除可能会导致很多过期key到了时间并没有被删除掉,所以就得靠惰性删除了。

这就是说,在你获取某个key的时候,redis会检查一下 ,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。

并不是key到时间就被删除掉,而是你查询这个key的时候,redis再懒惰的检查一下

通过上述两种手段结合起来,保证过期的key一定会被干掉。

但是实际上这还是有问题的,如果定期删除漏掉了很多过期key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?

如果大量过期key堆积在内存里,导致redis内存块耗尽了,怎么办?

答案是:走内存淘汰机制。

内存淘汰机制

如果redis的内存占用过多的时候,此时会进行内存淘汰,有如下一些策略:

noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧

allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)

allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,这个一般没人用吧

volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(这个一般不太合适)

volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key

volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除

Redis知识详解(超详细) Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。 阅读详情

相关推荐

保姆级教程:用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信(附完整代码)

本文详细介绍了如何利用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信,涵盖硬件连接、寄存器配置、时序优化及FPGA接口设计等关键步骤。通过实例代码和调试技巧,帮助开发者快速掌握高效数据交互技术,提升嵌入式系统设计能力。

weixin_26918763的博客 226

redis 详解之持久化方案

1 redis为什么需要持久化 redis属于kv形式的内存数据库,如果redis-server 突然宕机,那么redis数据库中的数据就会全部丢失,因此需要持久化来保证redis的数据不会因为redis-server发生故障而丢失,并且再redis重启的时候可以将持久化的文件中的数据重新加载到内存中存储。 2 redis.conf 关于持久化的相关配置 ###### aof ###### # redis.cnf appendonly no appendfilename "appendonly.aof" #

qq_39329062的博客 1131

手把手教你用VMware虚拟机搭建PCAN开发环境:从Ubuntu安装到CAN通讯实战

本文详细指导如何在VMware虚拟机中搭建PCAN开发环境,涵盖从Ubuntu系统安装、VMware精细配置、PCAN-USB设备直通,到Linux驱动编译、can-utils工具集使用及完整CAN通讯测试的全过程。通过实战步骤与故障排查技巧,帮助开发者快速构建稳定高效的CAN总线开发与测试沙盒,特别适合车载诊断与嵌入式通讯应用。

weixin_29216353的博客 225

Redis的持久化方案

Redis的持久化方案 ​ 由于本人之前项目主要使用redis进行业务场景的设计,并且也涉及到了redis的持久化方案。特此写这篇文章来归纳总结。由于之前有对Redis的大体介绍,因此在此对Redis的其他问题不做过多的研究,本篇文章专注于对于Redis持久化方案的研讨。 一、Redis的持久化简介 ​ 顾名思义,就是将Redis中存的数据存在磁盘当中。这样的好处是当Redis宕机时,就不再需要去数据库中读取数据存入Redis中了,就只需要加载持久化文件即可。除此之外,再部署Redis集群的时候,从机也是通

weixin_47479914的博客 1746

Altium Designer学习---如何进行SI仿真

Altium designer 如何进行SI仿真。         1、仿真电路中需要至少一块集成电路;             2、器件的IBIS模型;              3、在规则中必须设定电源网络和地网络;              4、建立SI规则约束;              5、层堆栈必须设置正确,电源平面必须连续;     建立的文件必须是一个工程,并把相应的文件放在工程目...

weixin_34050519的博客 4905

Halcon Socket TCP通讯:从算子调用到工业视觉系统集成

本文详细介绍了Halcon Socket TCP通讯在工业视觉系统中的应用与优化技巧。从基础算子调用到高并发处理,再到与PLC、机器人及MES系统的集成实战,提供了全面的解决方案和性能优化建议,帮助开发者高效实现工业视觉系统的通讯需求。

weixin_33502772的博客 248

在Redis中设置了过期时间的Key,需要注意哪些问题?

点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!作者:千山qianshanjuejin.im/post/5d6bda096fb9a06acc009dc8...

Java笔记虾 2393

2021-10-29【微生物】丨基于qiime2工具16S/ITS分析全套流程(上)

目录摘要工具与方法使用命令结果展示总结二级目录三级目录 摘要 前两个月项目特别多,最近终于有机会闲下来写点文章,把之前搭建的流程梳理一遍。前同事分析16S/ITS使用的qiime1,我接手后感觉不太适应,希望能够使用新版本来搭建,于是花了几天时间重新搭了这个流程, 工具与方法 使用工具:qiime2 使用版本:qiime2-2021.4 参考文档:https://docs.qiime2.org/2021.4/(最新版本2021.8) 使用命令 在这里插入代码片 结果展示 总结 二级目录 三级目录 ...

1万+

设置Redis的key的过期时间

        在key上设置一个过期时间(timeout),一旦时间到了,这个key将会被自动删除。这种特性术语通常叫做Redis的不稳定性。         一旦设置了过期时间,这个key只能被命令清除、删除或者重写其内容。这些命令包含del、set、getset以及所有的*store命令。这些命令只能改变key对应的value的存储值而不改变过期时间的设置。举个例子,使用incr改变k...

anterboss的博客 1万+

【LSTM回归预测】attention机制LSTM时间序列回归预测【含Matlab源码 1992期】

attention机制LSTM时间序列回归预测 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 2592

后仿真中《SDF反标必懂连载篇》之 探究 SDF延迟精度 与 timescale 精度问题

本篇文章,同样属于后仿真中的SDF反标系列文章内容之一。今天,将前仿真中的timescale 和 后仿真中 timescale+sdf 延迟数据,进行贯通讲解。不要忽视这部分内容,因为后仿真的成功准确与否,时间精度问题,很重要。为什么?接下来一一讲解。

那么菜的博客 2311

Redis过期策略、内存淘汰策略、持久化策略

一、持久化策略 1.基本概念  Redis的数据是存在内存中的,若redis宕机,数据就会全部丢失 (1)RDB快照,是一次全量备份,快照是内存数据的二进制序列化形式,存储上非常紧凑; (2)AOF日志,是连续的增量备份,AOF日志记录的是内存数据修改的指令记录文本,当数据库重启时要加载AOF日志进行指令重放,所以需要定期进行AOF重写,对日志进行瘦身。 2.怎么进行备份的 (1)RD...

Michaeles的博客 2409

基于FPGA的数字图像处理-直方图操作【3.3】

对于固定的位宽和图像分辨率来说,这个计算过程是 可定量的,也就是这个归一化系数是已知的。1.直方图累计和 根据数学定义,直方图累加和的定义是小于指定像素的所有像素 的统计值之和。在实际应用中,处理帧缓存是费时费力费资源的一件事情,在许 多情况下,图像的变换比较慢,在这种情况下的一个近似是当建立当 前帧的直方图统计结果时使用从前一帧得到的映射。由测试结果可见,这两幅过曝光和曝光不足的图像,经过均衡化 之后的效果图差别不大,对比度都非常高,设计代码达到了预期的均 衡目的。累加和的计算情况如图6-28所示。

qq_43416206的博客 1130

Redis 相关问题总结

官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)Redis利用队列技术将并发访问变为串行访问 1)绝大部分请求是纯粹的内存操作(非常快速)2)采用单线程,避免了不必要的上下文切换和竞争条件 3)非阻塞IO优。

lvyuanj的专栏 1210

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Redis

Redis用作缓存组件时,其基于内存的读写图形,比基于磁盘读写的数据库性能要高,适合缓存高频热点的数据,来提高读性能。定义:缓存穿透是指查询一个一定不存在的数据,由于缓存中不存在该数据,每次请求都会落到数据库上,从而可能导致数据库压力过大甚至崩溃。定义:缓存击穿是指某个热点数据在缓存中过期,而因此大量并发请求访问数据,导致这些数据都落到数据库上,从而可能引起数据库压力过大。多级缓存:构件多级缓存架构,例如本地缓存+分布式缓存,即使分布式缓存出现问题,本地缓存仍能提供一定的保护。

Dragonlongbo的博客 835

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

redis 缓存预热_大厂出现几率比较大的Redis面试题(含答案)

Java面试笔试面经、Java技术每天学习一点公众号Java面试关注我不迷路作者:_睶_来源:https://blog.youkuaiyun.com/Butterfly_resting/article/details/89668661本文的面试题如下:Redis 持久化机制缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题热点数据和冷数据是什么Memcache与Redis的区别都有哪些?单线程的...

weixin_36125719的博客 348

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Redis常见面试题

Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。Redis 支持数据的备份,即 master-slave 模式的数据备份。Redis 优势性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s。

m0_58414041的博客 675

Redis秋招面经(自用)

Redis秋招面经一、Redis是什么Redis优势Redis适用场景Redis很快的原因单线程的原因Redis为什么比MySQL快二、Redis数据类型、各种类型的底层实现及适用场景五大对象三、redis的持久化机制为什么Redis需要持久化?持久化机制RDB(默认)AOF四、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题缓存雪崩缓存穿透缓存预热缓存更新缓存降级五、Redis-skiplist跳表原理六、Redis过期策略、内存淘汰机制Redis的淘汰策略Redis的删除策略七、Redis集群方案

的博客 933

Redis-redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?

面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊。redis 是缓存,你

qq_38261137的博客 784

总结一波 Redis 面试题,收藏起来。

点击上方“码农突围”,马上关注 这里是码农充电第一站,回复“666”,获取一份专属大礼包 真爱,请设置“星标”或点个“在看” 作者:白楠楠链接:cnblogs.com/bainannan...

欢迎关注公众号:【码农突围】,回复9999,可以获取一份LeetCode刷题笔记 307

读者让我总结一波 redis 面试题,现在肝出来了!

Redis 持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。 实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。 RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即Snap

weixin_49114080的博客 210

大厂出现几率比较大的Redis面试题(含答案)

Java面试笔试面经、Java技术每天学习一点公众号Java面试关注我不迷路作者:_睶_来源:https://blog.youkuaiyun.com/Butterfly_resting/articl...

java面试笔试 229

几率大的Redis面试题(含答案)

其他面试题类型汇总: Java校招极大几率出的面试题(含答案)----汇总 几率大的网络安全面试题(含答案) 几率大的多线程面试题(含答案) 几率大的源码底层原理,杂食面试题(含答案) 几率大的Redis面试题(含答案) 几率大的linux命令面试题(含答案) 几率大的杂乱+操作系统面试题(含答案) 几率大的SSM框架面试题(含答案) 几率大的数据库(MySQL)面试题(含答案) 几率大的JVM面试题(含答案) 几率大的现场手撕算法面试题(含答案) 临时抱佛脚必备系列(含答案) 注:知识还在积累中,不能保

weixin_37990128的博客 385

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 详解(二):核心机制与缓存异常

上一篇我们介绍了 Redis 的基本概念、数据类型及适用场景,本篇将深入探讨 Redis 的持久化机制、过期键处理策略、线程模型以及常见的缓存异常问题,帮助你更全面地理解 Redis 的内部工作原理。

开往1982的博客 326
上一篇: Redis数据类型,与memcache的比较,命令,单线程模型
下一篇: Nginx介绍及基本功能
小亮彡
博客等级 码龄7年 6粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值