zoukankan      html  css  js  c++  java
  • redis实现持久化存储的两种方案

    一.简单说明

    redis是非关系型数据库,是一种内存型数据库。数据存储在内存中,所以当我们关掉软件,或者拔掉电源时,内存中的数据就会丢失。针对此场景,这里提出持久化的方案。它的核心就是将内存中的数据存储到硬盘中进行持久化。

    • RDB: 基于快照的持久化,速度更快,一般用作备份。主从复制也是依赖于rdb持久化功能。
    • AOF:以追加的形式记录redis操作日志的文件。可以最大程度保证redis数据安全,类似于mysql的binlog。

    二.持久化存储的方案

    2.1 方案一___RDB持久化

    这个是redis默认的持久化的方案,它的原理是在一定时间内检测key的变化情况,然后持久化数据。它可以手动执行save来触发持久化数据,也可以通过配置redis.conf文件,执行定时执行。
    RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。涉及核心配置如下:

    [root@k8s001 ~]# cat /etc/redis.conf
    dbfilename  s17dump.rdb           # 指定rdb的数据文件   
    bind 0.0.0.0
    requirepass redhat                # 指定redis的密码   
    save 900 1                        # 代表900秒内,有1个修改key的操作,就进行持久化      
    save 300 10                       # 300秒内,有10个修改类的操作,就持久化
    save 60  10000                    # 60秒内,有10000个修改类的操作,就持久化
    

    优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现

    2.2 方案二__AOF持久化

    这里不需要手动的save触发持久化。
    记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集。AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。
    涉及核心配置如下:

    [root@k8s001 ~]# cat /etc/redis.conf
    appendonly yes            # 开启aof持久化的参数
    appendfsync everysec      # 每秒进行一次aof持久化
    

    优点:最大程度保证数据不丢失。
    缺点:日志记录非常大

    RDB 优点:访问性能最佳 缺点:数据不安全、fork消耗极大
    AOF 优点:数据相对安全 缺点:访问性能相对不在最佳

  • 相关阅读:
    register_shutdown_function
    字节转换
    考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
    linux--svn checkout
    linux命令
    linux---mysql忘记密码
    array_merge函数的注意事项
    逻辑卷使用记录笔记
    系统设计时关于性能问题处理的几点心得
    SSH防暴力破解脚本
  • 原文地址:https://www.cnblogs.com/yuhaohao/p/13176979.html
Copyright © 2011-2022 走看看