栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号