Redis缓存持久化问题
·
RDB的执行原理:
save与bgsave->由于save会在主进程执行,造成数据堵塞,一般采用的是bgsave
bgsave的实现方式:在Linux系统中,进程是无法直接操作我们的物理磁盘的,操作系统会创建一个虚拟内存,虚拟内存与真实内存之间采用一个页表来进行维护,进行持久化的时候,主进程进行fork得到子进程,并且将页表复制给子进程,此时子进程就可以通过页表的映射关系读取到数据,将数据保存到磁盘中。当然为了防止子进程持久化数据的时候主进程对对内存中的数据进行修改导致出现脏数据。
fory采用的是copy-on-write的技术。当主进程执行读操作时,会访问共享内存,当主进程执行写操作时,则会拷贝一份数据,执行写操作。完成写操作之后,页表的映射关系也就到新的数据中。这样就避免了脏写的问题。
AOF的执行原理
AOF其实就是一个追加文件,当Redis执行写操作之后,AOF中就会记录下写入的数据,AOF默认是关闭,我们需要在Redis的配置文件中打开。
当然由于AOF会记录下所有的Redis写命令,对于同一个key来说,只有最后一次的写操作才是有用的,我们可以执行dgrewriteaof命令,让AOF执行重写功能,Redis中也会在触发阈值时自动重写文件,阈值我们可以自行配置
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)