Redis持久化,RDB跟AOF

Redis持久化,RDB跟AOF,第1张

前言

Redis是一种内存型非关系型数据库,如果断电或者宕机等故障出现,redis存在内存中的数据就会丢失,相应的Redis给出了两种持久化方案,还有一种是RDB跟AOF的结合;

1. RDB(Redis DataBase)

RDB是将某一时刻的数据集快照从内存写入磁盘当中,实际 *** 作过程是fork一个子进程将数据集写入一个临时文件,写入成功之后再替换掉之前的旧文件,以二进制压缩存储;

优点:

  • 整个Redis只包含一个dump.rdb文件,方便持久化;
  • 容灾性好,方便备份;
  • 高性能,通过fork一个单独的子进程来进行持久化,而主进程则不会进行任何的IO *** 作;
  • 数据集很大的时候,启动效率要优于AOF;

缺点:

  • 数据安全性低,因为RDB是间隔一段时间进行持久化的;
  • 如果数据量比较大可能会导致整个redis停止服务几百毫秒甚至一秒钟;
2. AOF(Append Only File)

AOF是将Redis的 *** 作日志以追加的方式写入文件;

优点:

  • 数据安全,提供了三种同步策略:
    1.每秒同步:宕机等情况会丢失1秒内的数据;
    2.每修改同步:不会丢失数据;
    3.不同步:由 *** 作系统决定,丢失的数据也是不确定的;
  • 通过append模式写文件,即使宕机了也不会丢失文件及数据,可以通过redis-check-aof 工具解决数据一致性的问题;
  • AOF的rewrite模式定期对AOF文件重写达到压缩(相同的命令合并)的目的;

缺点:

  • AOF的文件比RDB的文件大;
  • 数据集大的时候效率低于RDB;

RDB/AOF小结:

AOF的文件比RDB要大,并且比RDB安全,但是性能却低于RDB,AOF的更新频率比RDB高,如果在redis中同时配置了RDB跟AOF,服务会优先采用AOF进行持久化;

3.Redis过期键的删除策略

Redis中默认的过期策略:惰性删除跟定期删除;

  1. 惰性删除: *** 作某个数据的时候才回去判断数据是否过期,过期则删除,以空间换时间;
  2. 定期删除:每隔一段时间扫描redis server中expires字典,过期则删除;
  3. 定时删除:使用定时器设置key的过期时间,到点从dict中删除,以时间换空间;

Redis中有两个Dict对象:
dict:存放的是实际的数据;
expires:存放的是key和过期时间;

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/792545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存