前言
大家应该都知道,Redis持久化方式主要有两种:RDB(Redis DataBase)和AOF(Append-only file)。
但是他们各自存储了什么内容?有什么差异呢?今天我来给大家做个小试验。
前期准备,需要安装好docker、docker-compose的运行环境。
一、安装Redis
1、创建相关目录,执行如下命令。
1 2 | mkdir -p /docker/redis/ {data,log} cd /docker/redis |
2、编写yaml文件,内容如下;version替换成自己的docker-compose版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | vim docker-compose.yaml version: '2.2.2' services: redis: image: redis container_name: redis user: redis restart: always command: [ "redis-server" , "/usr/local/etc/redis/redis.conf" ] ports: - "6379:6379" volumes: - ./data : /data - ./log : /var/log/redis - ./redis .conf: /usr/local/etc/redis/redis.conf networks: - mynet networks: mynet: name: mynet driver: bridge |
3、编写配置文件,内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | vim redis.conf # 绑定的IP地址,若想监听所有网卡则可以注释掉(默认只监听本地环回接口) # bind 127.0.0.1 # Redis服务器运行的TCP端口 port 6379 # 是否以守护进程模式运行 daemonize no # PID文件位置 pidfile /var/run/redis-server.pid # 日志文件位置 logfile "/var/log/redis/redis-server.log" # 数据库的数量,默认是16个 databases 16 # 持久化选项 # RDB快照配置 save 1 1 save 900 1 save 300 10 save 60 10000 # AOF持久化开关 appendonly no # AOF重写条件 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # 日志级别 loglevel notice # TCP连接超时时间(秒) timeout 0 # 客户端闲置多长时间后断开连接(秒) tcp-keepalive 300 |
4、启动服务,执行如下命令。
1 | docker-compose up -d |
5、检查服务是否正常启动,执行如下命令。
1 | docker-compose ps -a |
正常情况会返回类似如下内容。
6、如果有服务启动失败,可以使用如下命令排查问题。
1 | docker logs redis |
7、至此,Redis安装完成并且已正常运行。
二、测试RDB(Redis DataBase)
1、修改配置文件,开启RDB模式关闭AOF模式,内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 持久化选项 # RDB快照配置 # 这意味着如果Redis服务器在900秒(15分钟)内至少有一个键的数据发生变化,它将会执行一次RDB持久化操作。 save 900 1 # 这个设置指,在300秒(5分钟)内如果有至少10个不同的键发生了变化,Redis也会创建一个新的RDB文件并将其保存到磁盘。 save 300 10 # 这个规则则表明,即使在很短的时间窗口内(60秒,即1分钟),只要有10000次(任何数量的变化都可以视为达到该阈值,因为通常情况下1分钟内不会发生如此大量的变更)键的变化,Redis也将执行持久化。 save 60 10000 # AOF持久化开关 appendonly no |
2、重新启动Redis,执行如下命令。
1 | docker-compose down && docker-compose up -d |
3、进入Redis客户端,执行如下命令。
1 | docker exec -ti redis redis-cli |
4、进行一些简单的操作,设置key、删除key,执行类似如下的命令。
1 2 3 | set t1 max set t1 hello-max set t1 world-max |
5、查看RDB文件,执行如下命令。
1 | cat data /dump .rdb |
返回内容如下。
从文件中可以看出来,只记录了最后一次设置的key跟value。
6、删除t1,然后再查看文件内容如下。
从文件中已经看不到t1的记录了。
7、至此,RDB模式已测试完成。
三、测试AOF(Append-only file)
1、修改配置文件,开启AOF模式关闭RDB模式,内容如下。
1 2 3 4 5 6 7 8 9 | # 持久化选项 # RDB快照配置 # RDB配置全部注释掉 #save 900 1 #save 300 10 #save 60 10000 # AOF持久化开关 appendonly yes |
2、重新启动Redis,执行如下命令。
1 | docker-compose down && docker-compose up -d |
3、进入Redis客户端,执行如下命令。
1 | docker exec -ti redis redis-cli |
4、进行一些简单的操作,设置key、删除key,执行类似如下的命令。
1 2 3 4 | set t1 max set t1 hello-max set t1 world-max del t1 |
5、查看AOF文件,执行如下命令。
1 | cat data /appendonly .aof |
返回内容如下。
从文件中可以看出来,每次的操作都有记录。
6、至此、AOF模式已测试完成。
总结
Redis持久化方式主要有两种:RDB(Redis DataBase)和AOF(Append-only file)。
1、RDB(Redis DataBase)
- 保存了某个时间点上的数据快照,对于恢复数据来说比较快。
- 占用空间相对较小,节省磁盘空间。
2、AOF(Append-only file)
- 记录Redis执行的每个写命令,保证了每个写操作都能被持久化,从而提高了数据安全性。
- 文件是一个文本文件,易于阅读和理解,对于排查问题有帮助。
- 因为记录了每个写操作,所以AOF文件通常比RDB文件大。
到此这篇关于Redis中不同持久化方式的差异对比的文章就介绍到这了,更多相关Redis持久化方式差异内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!