首页 > 数据库 >redis的持久化

redis的持久化

时间:2023-09-12 16:23:15浏览次数:42  
标签:aof 持久 文件 redis AOF rdb 重写

redis支持两种持久化方式RDB(Redis Database)和AOF(Append only file)。
1. RDB
 a. 在指定的时间将内存中的数据集快照写入磁盘,默认存储文件的名称为dump.rdb
 b. RDB文件是一个紧凑压缩的二进制文件
 c. 恢复大数据集的时候速度比AOF要快,适合数据备份和灾难恢复
 d. 何时产生快照
  i. 手工:
   • save命令:会阻塞Redis服务器直至RDB过程完成为止
   • bgsave命令:fork创建子进程,在后台异步执行快照操作,同时还可以响应其他请求,但可能丢失数据
  ii. 自动
   • 通过在配置文件中配置save m n, 数据集在m秒更改n次时触发bgsave操作,可以同时配置多个策略
   • 主从架构时,当从节点发送sync给主节点时,主节点触发bgsave操作
 e. 相关配置
  i. dir:rdb文件存放的目录
  ii. dbfilename:rdb文件的名称
  iii. rdbcompression:yes 是否压缩数据
  iv. rdbchecksum:yes 导入时是否检查
2. AOF
 a. 采用追加文件的方式,把每次的写命令记录到日志,重启时重新执行AOF文件中的命令来恢复数据
 b. 可以通过redis-check-aof来解决写入时宕机的问题
 c. rewrite重写:AOF文件越来越大,包含很多的无效命令,通过定期重写来压缩AOF文件
  i. 手动触发:调用bgrewriteaof命令
  ii. 通过配置触发;
   • auto-aof-rewrite-min-size: AOF重写时文件的最小体积,默认为64M
   • auto-aof-rewrite-percentage: 当前AOF文件空间和上一次AOF文件空间的比值
 d. 基本原理:
  i. redis每次写入时,都是把命令追加到aof_buf缓冲区
  ii. AOF根据策略向硬盘做同步操作,高频的AOF会带来影响
 e. 基本配置:
  i. appendonly:是否开启AOF,默认为no
  ii. appendfilename:AOF文件名称
  iii. dir:AOF文件存储路径
  iv. appendfsync:同步方式(always | everysec | no)
   • always: 每次修改都会写入AOF,性能较差
   • everysec:每秒同步一次(默认)
   • no:由操作系统控制,性能最佳但最不安全
  v. no-appendfsync-on-rewrite: aof重写期间是否同步
  vi. aof-load-truncated: aof尾部文件出现问题时如何处理,yes表示写日志继续,no表示等待修复后写入
3. rewrite的混合模式
 a. 结合rdb和aof
 b. 在aof重写的时候,以rdb形式进行重写(即二进制形式),这样aof的文件更小
 c. 恢复数据时,先按照aof恢复,如不存在,则查找rdb是否存在
 d. 4.0版本之后已经开始支持混合模式

标签:aof,持久,文件,redis,AOF,rdb,重写
From: https://www.cnblogs.com/gengone/p/17696514.html

相关文章

  • 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文......
  • 我是如何用 redis 分布式锁来解决线上历史业务问题的
    近期发现,开发功能的时候发现了一个mq消费顺序错乱(历史遗留问题),导致业务异常的问题,看看我是如何解决的问题抛出首先,简单介绍一下情况:线上k8s有多个pod会去消费mq中的消息,可是生产者发送的消息是期望一定要有序去消费,此时要表达的是,例如生产者如果发送了3个通知消息,分......
  • Redis7 10大数据类型(概述)
    一、概述二、数据类型1、redis字符串(String)String(字符串)string是redis最基本的类型,一个key对应一个value。string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是51......
  • Redis为什么这么快?
    面试官:Redis为什么这么快?(qq.com)”因为它是内存数据库,不用往硬盘上写,所以快啊““基于内存实现”这个原因就不详细展开了哈,毕竟地球人都懂。空间换时间——SDS数据结构这里所说的空间为”内存空间“。Redis是用C语言写的,但它的String数据类型,并没有直接用C语言中的char*......