Redis持久化机制-----RDB和AOF

Redis持久化机制
1. RDB

RDB是Redis默认的持久化机制

  • RDB持久化文件,速度比较快,而且存储的是一个二进制的文件,传输起来很方便。

  • RDB持久化的时机:

    save 900 1:在900秒内,有1个key改变了,就执行RDB持久化。

    save 300 10:在300秒内,有10个key改变了,就执行RDB持久化。

    save 60 10000:在60秒内,有10000个key改变了,就执行RDB持久化。

  • RDB无法保证数据的绝对安全。

[root@VM-4-6-centos ~]# docker exec -it redis bash
root@24c6a52e162c:/data# ls
redis.aof
root@24c6a52e162c:/data# redis-cli
127.0.0.1:6379> set name shy
OK
127.0.0.1:6379> set age 24
OK
127.0.0.1:6379> [root@VM-4-6-centos ~]#
[root@VM-4-6-centos ~]# docker exec -it redis bash
root@24c6a52e162c:/data# ls
redis.aof  redis.rdb

[root@VM-4-6-centos ~]# docker exec -it redis bash
root@24c6a52e162c:/data# ls
redis.aof
root@24c6a52e162c:/data# cat redis.aof
#AUTH认证,给redis设置认证登陆密码
#requirepass xxxx

#RDB持久化配置
save 900 1
save 300 10
save 60 10000
#10秒内有一个key发生变化,就持久化
save 10 1
#设置持久化文件名称
dbfilename redis.rdb
 
#开启AOF持久化
appendonly yes
#设置持久化文件名称
appendfilename "redis.aof"
#持久化时机
# appendfsync always
appendfsync everysec 
# appendfsync no
2. AOF

AOF持久化机制默认是关闭的,Redis官方推荐同时开启RDB和AOF持久化,更安全,避免数据丢失。

  • AOF持久化的速度,相对RDB较慢的,存储的是一个文本文件,到了后期文件会比较大,传输困难。

  • AOF持久化时机。

    appendfsync always:每执行一个写操作,立即持久化到AOF文件中,性能比较低。
    appendfsync everysec:每秒执行一次持久化。
    appendfsync no:会根据你的操作系统不同,环境的不同,在一定时间内执行一次持久化。

  • AOF相对RDB更安全,推荐同时开启AOF和RDB。

6.3.3 注意事项

同时开启RDB和AOF的注意事项:

如果同时开启了AOF和RDB持久化,那么在Redis宕机重启之后,需要加载一个持久化文件,优先选择AOF文件。

如果先开启了RDB,再次开启AOF,如果RDB执行了持久化,那么RDB文件中的内容会被AOF覆盖掉。

6.4 Redis的主从架构

单机版 Redis存在读写瓶颈的问题

| 主从架构 |

在这里插入图片描述

指定yml文件

version: '3.8'
services:
  redis1:
    image: daocloud.io/library/redis:6.0.7
    restart: always
    container_name: redis1
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 7001:6379
    volumes:
      - ./conf/redis1.conf:/usr/local/redis/redis.conf
    command: ["redis-server","/usr/local/redis/redis.conf"] #redis服务启动携带指定文件
  redis2:
    image: daocloud.io/library/redis:6.0.7
    restart: always
    container_name: redis2
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 7002:6379
    links:
      - redis1:master #redis2连接redis1服务,并起名为master
    volumes:
      - ./conf/redis2.conf:/usr/local/redis/redis.conf
    command: ["redis-server","/usr/local/redis/redis.conf"] #redis服务启动携带指定文件
  redis3:
    image: daocloud.io/library/redis:6.0.7
    restart: always
    container_name: redis3
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 7003:6379
    links:
      - redis1:master #redis3连接redis1服务,并起名为master
    volumes:
      - ./conf/redis3.conf:/usr/local/redis/redis.conf
    command: ["redis-server","/usr/local/redis/redis.conf"] #redis服务启动携带指定文件
    
# redis2和redis3从节点配置
replicaof master 6379
[root@VM-4-6-centos docker-redis-master-slave]# docker exec -it redis1 bash
root@a530753d3c03:/data# redis-cli
127.0.0.1:6379> info

[root@VM-4-6-centos ~]# docker exec -it redis2 bash
root@cdb2dbf64b13:/data# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> info

[root@VM-4-6-centos ~]# docker exec -it redis3 bash
root@29607d180c41:/data# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> info

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值