• Redis缓存系列--(二)Redis持久化机制


    Redis持久化机制

    Redis的数据都放在内存中,如果没有配置持久化,Redis重启后数据就全丢失了,于是需要开启Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘恢复数据

    Redis持久化的方式

    Redis持久化的方式分为:RDB和AOF方式。RDB持久化方式能够在指定的时间间隔对数据进行快照存储;AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候回重新执行这些命令来恢复原始数据,下面我们来具体看一下这两种持久化的使用。

    RDB持久化的实现

    RDB持久化的方式主要有两种方法:

    1. 客户端直接通过命令BGSAVE或者SAVE来创建一个内存快照
    • BGSAVE调用fork来创建一个子进程,子进程负责将快照写入磁盘,而父进程仍然继续处理命令
    • SAVE执行SAVE命令过程中,不再响应其他命令
    1. 在redis.conf中调整配置选项,当在规定的时间内,Redis发生了写操作的个数满足条件会触发BGSAVE命令,例如(可以同时配置多个条件的持久化动作)
    # 900秒内至少一次写操作
    save 900 1
    # 300秒之内至少发生10次写操作
    save 300 10
    

    这里我们通过实际操作发现,对于配置save 5 2虽然表示5秒内如果有两次或者以上的Redis写操作,那么就会触发Redis持久化。如果在5秒内,Redis写操作只有1次,那么过了5秒是不会进行持久化保存的,但是如果在第六秒又有一次写操作,那么同样会触发数据持久化保存,也就是说如果不满足次数时,Redis会记录当前的写操作次数,直到满足条件就会触发持久化(前提是服务器不宕机,否则可能会丢失数据);如果在5秒钟内Redis写操作的次数超过了2次,到了2次之后不会立即持久化,而是过了5秒后再对写操作进行持久化,也就是说Redis是每隔5秒钟检查一次,看是否满足保存条件

    RDB方式的优点:对性能影响最小;RDB文件进行数据恢复比使用AOF要快很多
    RDB方式的缺点:有丢失数据的可能(规定时间内没有符合条件,就不会保存);如果数据集非常大且CPU不够强(比如单核),Redis在fork子进程时可能会消耗相对较长的时间,影响Redis对外提供服务的能力

    AOF持久化的实现

    开启AOF持久化,只需要在配置文件中添加appendonly yes。那么AOF策略的调整有以下几种:

    # 开启aof持久化
    appendonly yes
    # 1.每次有数据修改发生时都会写入AOF文件
    appendfsync always
    # 2.每秒钟同步一次,该策略为AOF的默认策略
    appendfsync everysec
    # 3.从不同步一次,高效但是数据不会被持久化
    appendfsync no
    

    优点:最安全,容灾,易读可修改
    缺点:文件体积大,性能消耗比RDB高,数据恢复速度比RDB慢

    具体的操作可以自己在Redis启动的配置文件根据个人需求来配置。

  • 相关阅读:
    网络问题排查
    SpringBoot 自定义注解清除缓存
    MYSQL外键的使用以及优缺点
    Java List
    黑客帝国代码雨
    前端接收字节数据流,显示图片
    何为熔断降级
    spring的线程
    window.open 与 iframe
    js 全部替换
  • 原文地址:https://www.cnblogs.com/mr-ziyoung/p/13885955.html
Copyright © 2020-2023  润新知