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 no2. AOF
6.3.3 注意事项AOF持久化机制默认是关闭的,Redis官方推荐同时开启RDB和AOF持久化,更安全,避免数据丢失。
AOF持久化的速度,相对RDB较慢的,存储的是一个文本文件,到了后期文件会比较大,传输困难。
AOF持久化时机。
appendfsync always:每执行一个写操作,立即持久化到AOF文件中,性能比较低。
appendfsync everysec:每秒执行一次持久化。
appendfsync no:会根据你的操作系统不同,环境的不同,在一定时间内执行一次持久化。AOF相对RDB更安全,推荐同时开启AOF和RDB。
6.4 Redis的主从架构同时开启RDB和AOF的注意事项:
如果同时开启了AOF和RDB持久化,那么在Redis宕机重启之后,需要加载一个持久化文件,优先选择AOF文件。
如果先开启了RDB,再次开启AOF,如果RDB执行了持久化,那么RDB文件中的内容会被AOF覆盖掉。
单机版 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机械键盘等精美礼品!



