• Redis AOF 全持久化



    简介:

    Redis AOF 持久化,将每次接收到更改 redis 数据的操作都记录到一个 aof 文件,当服务器意外宕机或 redis 服务器非法关闭时,不会丢失数据。

    可以做到数据安全化,但是性能会受到影响。

    1、修改 redis.conf

    shell > vim /usr/local/redis/redis.conf
    
    daemonize yes
    port 6379
    timeout 300
    loglevel debug
    pidfile /usr/local/redis/logs/redis.pid
    logfile /usr/local/redis/logs/redis.log
    
    databases 16
    
    #save 900 1
    #save 300 10
    #save 60 10000
    #rdbcompression yes
    #dbfilename dump.rdb
    
    ## 关闭 RDB 持久化
    
    dir /usr/local/redis/data/
    
    appendonly yes
    appendfilename appendonly.aof
    appendfsync everysec
    
    ## 开启 AOF 持久化,定义 aof 文件名,定义同步磁盘规则为每秒强制同步
    
    no-appendfsync-on-rewrite yes
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    
    ## 由于 AOF 的特性是记录每次操作,当客户端执行相同的操作时,aof 也会记录这些相同的每次操作,那么 aof 文件会不断增加。
    ## 对于这个问题,可以使用 aof 文件的重写功能解决 aof 文件的增长。当 aof 文件满足一定条件时就对 aof 进行重写,重写是根据当前内存数据库中的数据进行遍历到一个临时的 aof 文件,写完后替换原来的 aof 文件。 ## no
    -appendfsync-on-rewrite 参数表示在重写期间对新接收到的写操作不同步,暂时存在内存中,等重写完后再写入,防止与磁盘 IO 冲突。 ## auto-aof-rewrite-percentage 参数表示 aof 文件增长率大于这个值并且同时 aof 文件大于下面参数值时,触发 aof rewrite ## auto-aof-rewrite-min-size 参数表示当前 aof 文件大小大于这个值时

    2、测试 Redis AOF 持久化

    shell > redis-server /usr/local/redis/redis.conf
    
    shell > ls /usr/local/redis/data/
    appendonly.aof

    ## 生成一个 .aof 的空文件

    shell > redis-cli
    redis 127.0.0.1:6379> set name wang
    OK
    redis 127.0.0.1:6379> get name
    "wang"
    redis 127.0.0.1:6379> set name1 zhao
    OK
    redis 127.0.0.1:6379> get name1
    "zhao"
    redis 127.0.0.1:6379> set name2 lun
    OK
    redis 127.0.0.1:6379> get name2
    "lun"
    redis 127.0.0.1:6379> quit
    
    shell > cat /usr/local/redis/data/appendonly.aof
    *2
    $6
    SELECT
    $1
    0
    *3
    $3
    set
    $4
    name
    $4
    wang
    *3
    $3
    set
    $5
    name1
    $4
    zhao
    *3
    $3
    set
    $5
    name2
    $3
    lun

    ## 记录了每一次操作

    shell > kill -9 `cat /usr/local/redis/logs/redis.pid`

    ## 像测试 RDB 一样,非法关闭 redis

    shell > redis-server /usr/local/redis/redis.conf
    
    shell > redis-cli
    redis 127.0.0.1:6379> get name
    "wang"
    redis 127.0.0.1:6379> get name1
    "zhao"
    redis 127.0.0.1:6379> get name2
    "lun"
    redis 127.0.0.1:6379> quit

    ## 启动测试 keys/value 都存在。
    ## 建议使用 AOF 持久化的同时也使用 RDB 半持久化,AOF 的优先级是高于 RDB 的,也就是说启动服务时是先加载 AOF ,后加载 RDB 的。
    ## 当 Redis 服务器磁盘坏掉时,数据如何保证不丢失? Master / slave 的方式解决!

  • 相关阅读:
    react 封装antd menu组件,路由懒加载,可折叠,可配置显示和隐藏,刷新后选择正确的菜单,打开正确的submenu
    useHistory做页面跳转导航
    react-draft-wysiwyg富文本组件
    html转json json转html
    create-react-app 生成 report.html 可视化打包分析
    axios设置请求头实现post请求发送数据的格式(Form Data)
    url查询参数中的汉字如何解码
    React在body下追加全局组件并实现渲染更新
    Loadrunner-08-增强和优化脚本-检查点
    Loadrunner-06-增强和优化脚本-事务
  • 原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/5640018.html
Copyright © 2020-2023  润新知