首页 > 数据库 >Redis 持久化和aof相关问题

Redis 持久化和aof相关问题

时间:2023-09-12 17:23:10浏览次数:33  
标签:aof 持久 文件 Redis 命令 进程 重写

Redis 持久化和aof

Redis 如何实现数据不丢失?

有三种方式实行持久化

  • aof,将执行成功的写命令保存到aof文件中,如果aof文件过大会发生aof重写
  • rdb,保存内存数据的快照
  • 混合模式,同时使用aof和rdb,提高性能

为什么aof要先执行命令再保存命令

不用检查命令合法,不会阻塞当前写的命令

缺点:数据丢失,阻塞后续命令的执行

aof回写的方式有几种

三种策略

  • always,每次执行完写命令之后就会将aof缓冲池的内容写入文件
    • 优点:可靠性高
    • 缺点:性能开销大
  • everysec,每隔一秒将aof缓存池的内容写入文件
    • 优点:性能适中
    • 缺点:丢失1秒的数据
  • no,将写入文件的时机交给操作系统
    • 优点:性能好
    • 缺点:可能丢失很多数据

AOF 日志过大,会触发什么机制?

会触发aof重写机制,aof重写创建一个子进程用来扫描数据库的内容,将内容保存到新的aof文件中,如果数据库新增数据,就会先这个数据保存到aof重写缓冲池中,子进程扫描结束之后就会发送信号给主进程,主进程会将aof重写缓冲池的内容追加到新的aof文件,将新文件改名覆盖旧文件。

为什么aof重写要开启子进程,为什么不是开启子线程

  • 开启子进程不阻塞主进程的运行
  • 子进程有父进程的内存副本,如果开启子线程,会涉及到加锁,解锁问题,会降低性能。如果父进程的内存发生变化,会拷贝一份到子进程,子进程也就没有加锁解锁问题了

标签:aof,持久,文件,Redis,命令,进程,重写
From: https://www.cnblogs.com/xiuer211/p/17697261.html

相关文章

  • Redis 过期删除与内存淘汰
    Redis过期删除与内存淘汰Redis使用的过期删除策略是什么?redis将有过期时间的key带上过期时间的时间戳保存到一个字典中。主要分为两大类:一个是惰性删除,不会主动检查key是否过期,cpu使用到的时候先检查是否过期,过期了删除,没有过期返回一个是定期删除,会定期检查key是否过期r......
  • Docker配置PostgreSQL数据本地持久化
    原文:https://www.cnblogs.com/yangyangming/p/13502405.html主机中的本地目录作为Docker容器内的持久存储卷装载,以便在主机和Docker容器之间共享数据。如果主机希望访问或定期备份在Docker容器内运行的DB服务器写入文件夹的数据或数据库,则此方法非常有用。创建本地数据卷#创建......
  • redis的持久化
    redis支持两种持久化方式RDB(RedisDatabase)和AOF(Appendonlyfile)。1.RDB a.在指定的时间将内存中的数据集快照写入磁盘,默认存储文件的名称为dump.rdb b.RDB文件是一个紧凑压缩的二进制文件 c.恢复大数据集的时候速度比AOF要快,适合数据备份和灾难恢复 d.何时产......
  • Redis - 出现ERROR:WRONGTYPE Operation against a key holding the wrong kind of val
    原因:用的方法与redis服务器中存储数据的类型存在冲突。比如:有一个key的数据存储的是list类型的,但使用redis执行数据操作的时候却使用了非list的操作方法。 对一个Redis键执行不兼容的操作,这个错误通常发生在以下情况:1、类型不匹配:试图执行的操作与键存储的数据类型不匹配。例......
  • Redis 高效、安全的不停机数据迁移方案
    Redis是目前最流行的键值对存储数据库,凭借高性能和丰富的数据类型的特性,不仅可以作为缓存,还可以作为一个可持久化的数据库存储。随着业务的发展和版本的迭代,必然会遇到内存不足、集群节点不够和BUG等一系列问题。为了防止这些问题导致的系统故障,常常会把对内存、集群节点扩缩容......
  • Redis大揭秘:如何秒级存入百万数据?
    大家好,我是小米,一个热爱技术分享的小伙伴。最近在面试中遇到了一个有趣的问题:Redis里怎么快速存入百万数据?今天,我就来和大家分享一下这个有趣的问题,希望对大家有所帮助。Redis简介首先,让我们来简单了解一下Redis。Redis是一个高性能的键值存储系统,被广泛用于缓存、队列和实时分......
  • Redis从入门到放弃(2):数据类型
    Redis从入门到放弃(2):数据类型 在Redis中,数据以键值对的形式存储。Redis支持五种主要的数据类型,每种类型都有不同的用途和特性。本文将介绍Redis的五种数据类型:字符串(string),哈希(hash),列表(list),集合(set)和有序集合(sortedset)。1.字符串(String)介绍字符串是Redis中最基本的数据......
  • Redis从入门到放弃(1):安装配置
    Redis从入门到放弃(1):安装配置 1.介绍Redis是一个高性能的开源key-value数据库。它被广泛应用于缓存、会话存储、实时分析、消息队列等场景。Redis具有以下三个主要特点:数据持久化:Redis支持将内存中的数据保存到磁盘上,确保数据在断电或重启后不丢失。多样数据结构:除了支持......
  • Redis缓存数据和表数据一致性之延时双删策略
    一、什么是Redis延时双删?1、延迟双删策略是分布式系统中数据库存储和缓存数据保持一致性的常用策略,但它不是强一致。不管哪种方案,都无法绝对避免Redis存在脏数据的问题,只能减轻这个问题2、因为双删策略执行的结果是把redis中保存的那条数据删除了,以后的查询就都会去查询数据库......
  • Redis.conf 详解
    一、NETWORK网络bind127.0.0.1#绑定的IPprotected-modeno#保护模式port6379#端口设置二、GENERAL通用daemonizeyes#以守护进程的方式运行,默认是no,我们需要自己开启为yespidfile/var/run/redis_6379.pid#如果是后台启动,我们需要指定一个pid文......