首页 > 数据库 >Redis的持久化机制和缓存预热

Redis的持久化机制和缓存预热

时间:2024-06-20 14:31:39浏览次数:27  
标签:缓存 持久 redis Redis 内存 快照 数据 化机制

Redis的持久化机制

Redis是一个内存数据库,它的数据存放在内存中,但是如果关闭服务、机器关机或者断电的话,内存中的所有数据都会慢慢消失消失。
内存数据消失的原因:因为内存中的数据是半导体晶体管开关,这种开关高度依赖电源,当电源断电后,无法再控制晶体管的开关状态。这时候电容发挥作用,但是电容的电量也会随着时间而流逝,最终数据彻底消失。

所以Redis提供了两种不同的持久化方式,即RDB内存快照文件 和 AOF 更新日志追加文件。
RDB(Redis Database)内存快照存储: 在指定时间间隔内,将redis内存中存储的数据生成snapshot快照并存入到磁盘文件中,默认文件时dump.rdb文件。可以通过conf启动参数指定文件目录和文件名,以及定时刷入快照的时间。

AOF(Append Of File)日志文件追加: 将redis执行过的所有写、更新操作指令,当这些指令满了多少条之后,执行吸入aof磁盘文件。

这两种持久化方式可以同时使用,以达到最少丢失缓存数据的目的。
当然也可以把这两种方式的持久化全部关闭,这时redis就是一个纯内存缓存数据。

二、RDB快照的实现原理
Redis时单线程程序,这一个线程需要处理多应用的并发读写操作还要进行内存数据结构的逻辑读写操作。最大的隐患是redis在进行持久化时,会需要触发对磁盘io的读写操作,这显然严重拖垮redis的高性能。
那redis为了解决这个隐患,Redis的RDB持久化是在一个子进程中完成的,它会fork()出一个子进程来执行实际的持久化工作,这个子进程在执行过程中会使用写时复制(Copy On Write)技术,子进程fork()出来的一瞬间内存就会凝固,而主进程会一直服务于客户端的读写操作,当需要对内存进行操作时,这个时候就会使用copy on write技术将数据分离成数据段页,将需要读写操作的数据段进行复制并进行修改,而子进程读取的数据段页面数据是不产生变化的,这部分数据会一直进行磁盘数据持久化,这就是为什么叫内存快照的原因。当子进程持久化完成后,会通知主进程当前持久化的时间,主进程会保存这个时间,用于判断执行持久化动作。

标签:缓存,持久,redis,Redis,内存,快照,数据,化机制
From: https://www.cnblogs.com/velloLei/p/18256510

相关文章

  • 【长文】带你搞明白Redis
    本文使用第一人称来介绍Redis一、概述Redis,英文全称是RemoteDictionaryServer(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度......
  • 淘宝二面:千万级数据中如何用Redis维护热点数据"?
    MySQL里有千万条数据,但是Redis中只存10万的数据,如何保证redis中的数据都是热点数据?......
  • (四)Redis 缓存应用、淘汰机制
    1、缓存应用一个系统中不同层面数据访问速度不一样,以计算机为例,CPU、内存和磁盘这三层的访问速度从几十ns到100ns,再到几ms,性能的差异很大,如果每次CPU处理数据时都要到磁盘读取数据,系统运行速度会大大降低。所以,计算机系统中,默认有两种缓存:(1)CPU里面的末级缓存,即LLC,用来......
  • Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Port
    Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Portainer、MongoDB......) 精选 原创CodeDevMaster2022-11-1608:42:24博主文章分类:Docker©著作权文章标签dockermysqlNginxNacosMQ文章分类Docker云计算yyds干货盘点 Docker部署......
  • .NET Core 3.x 基于AspectCore实现AOP,实现事务、缓存拦截器
    最近想给我的框架加一种功能,就是比如给一个方法加一个事务的特性Attribute,那这个方法就会启用事务处理。给一个方法加一个缓存特性,那这个方法就会进行缓存。这个也是网上说的面向切面编程AOP。AOP的概念也很好理解,跟中间件差不多,说白了,就是我可以任意地在方法的前面或后面添加代码......
  • 在CentOS上创建虚拟机以及Redis
    虚拟机向导步骤1.典型2.稍后安装操作系统3.liunxCentOS764位4.自定义文件——使用IOS映射文件完成开启虚拟机选择InstallCentOS7设置ROOT密码都可以设置为root网卡设置ipaddr查看IP地址cd/进入根目录cdetc进入etc目录cdsysconfig进入sysconf......
  • Spring是如何通过三级缓存解决循环依赖的
    Spring是如何利用三级缓存解决循环依赖的转载自:https://www.cnblogs.com/xw-01/p/17561035.html1.定义问题1.1什么是循环依赖其实好理解,就是两个Bean互相依赖,类似下面这样:@ServicepublicclassAService{ @Autowired BServicebService;}@ServicepublicclassBSer......
  • 史上最全JAVA八股文——redis篇,欢迎收藏
    ......
  • Redis从入门到精通2024版 视频教程 下载
    Redis从入门到精通2024版视频教程下载├─第01章开篇│   001.Redis录制计划.mp4│   002.Redis介绍.mp4│   003.Redis安装.mp4│    ├─第02章基本数据类型│   01.在后台启动Redis.mp4│   02.基本数据类型-Stri......
  • Redis协议规范简介
    Redis客户端使用为名为RESP(Redis序列化协议)的协议与Redis服务器进行通信。虽然该协议是专门为Redis设计的,但它也可以用于其他的CS软件项目的通信协议。RESP可以序列化不同的数据类型,如整型,字符串,数组。还有⼀种特定的错误类型。请求将要执行的命令作为字符串数组从Redis......