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无法保证数据的绝对安全。
流程如下↓
1进入redis的配置文件redis.conf增加右边的rdb配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename redis.rdb
2接着来到docker-compose.yml文件,增加redis数据文件夹的目录挂载
version: '3.1'
services:
redis:
image: daocloud.io/library/redis:5.0.7
restart: always
container_name: redis
environment:
- TZ=Asia/Shanghai
ports:
- 6379:6379
volumes:
- ./conf/redis.conf:/usr/local/redis/redis.conf
- ./data:/data #增加数据文件夹的目录挂载
command: ["redis-server","/usr/local/redis/redis.conf"]
3先彻底停止然后重启redis容器,接着进入redis容器内部,准备操作
[root@localhost docker_redis]# docker-compose down
[root@localhost docker_redis]# docker-compose up -d
4执行redis-cli客户端命令,然后通过shutdown save关闭保存命令来快速触发数据持久化保存数据到rdb文件,最后restart重启redis容器,发现数据还在,证明持久化成功
AOF
AOF持久化机制默认是关闭的,Redis官方推荐同时开启RDB和AOF持久化,更安全,避免数据丢失。
AOF持久化的速度,相对RDB较慢的,存储的是一个文本文件,到了后期文件会比较大,传输困难。
AOF持久化时机。
appendfsync always:每执行一个写操作,立即持久化到AOF文件中,性能比较低。 appendfsync everysec:每秒执行一次持久化。 appendfsync no:会根据你的操作系统不同,环境的不同,在一定时间内执行一次持久化。
AOF相对RDB更安全,推荐同时开启AOF和RDB。
流程如下↓
1进入redis配置文件增加aof配置,修改了配置文件,用docker-compose restart重启redis容器让其生效
redis.conf 增加下面配置:
appendonly yes
appendfilename "redis.aof"
# appendfsync always
appendfsync everysec
# appendfsync no
重启容器:
[root@localhost docker_redis]# docker-compose restart
2进入redis容器内部,关闭但不保存,发现我们的数据lisi持久化到了aop文件,可以打开文件看看↓
注意事项
同时开启RDB和AOF的注意事项:
同时开启了AOF和RDB持久化,那么在Redis宕机重启之后,会加载一个持久化文件,官方默认选择AOF文件.
先开启了RDB,再次开启AOF,如果RDB执行了持久化,那么RDB文件中的内容会被AOF覆盖掉,建议同时开启.
另外,如果配置忘了,可以随便打开一个redis服务器软件安装包,解压找到里面的conf配置文件,拷贝即可