项目Github地址:github/booklet
Redis 提供了两种不同的持久化方法来将数据存储到硬盘里面。一种方法叫快照(snapshotting,RDB),它可以将存在于某一时刻的所有数据都写入硬盘里面。
另一种方法叫只追加文件(append-only file,AOF),它会在执行写命令时,将被执行的写命令复制到硬盘里面。
这篇文章梳理了Redis两种持久化方法的知识点,并通过Docker Docker-Compose进行环境的模拟,来进行数据的备份与恢复等操作。
至于测试数据,我通过一个python脚本批量录入三百万条key-value键值对(会消耗719.42M内存,来源于redis-cli info信息),没有python环境的同学,可以使用我在项目里准备的另一个shell脚本
python脚本代码:
# -*- coding: UTF-8 -*-
# file write.py
# author liumapp
# github https://github.com/liumapp
# email liumapp.com@gmail.com
# homepage http://www.liumapp.com
# date 2019/9/9
#
import redis
r = redis.Redis(host="127.0.0.1", port=6379, db=0, password="admin123")
print("开始插入三百万条数据,每10万条数据提交一次批处理")
with r.pipeline(transaction=True) as p:
value = 0
while value < 3000000:
print("开始插入" str(value) "条数据")
p.sadd("key" str(value), "value" str(value))
value = 1
if (value % 100000) == 0:
p.execute()
RDB
RDB持久化是通过创建快照来获得数据副本,即简单粗暴的直接保存键值对数据内容
要启用RDB(并关闭AOF),我们需要修改Redis的配置文件(./redis_config/redis.conf):
requirepass admin123
save 60 1000
stop-writes-on-bgsave-error no
rdbcompression no
dbfilename dump.rdb
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
dir /data/
上述配置会通过docker-compose的配置,映射到Redis容器中并启用,具体在下面的实操中介绍

本文介绍了Redis的两种持久化方法——RDB和AOF,并重点讲解了在Docker环境中如何配置和使用RDB进行数据持久化。通过Python脚本生成测试数据,演示了RDB快照的创建和恢复过程,强调了RDB在全量备份中的适用性。文章还提到了AOF的优势在于实时备份,并指出在分布式平台中,需要结合复制机制以实现更全面的数据保护。

999

被折叠的 条评论
为什么被折叠?



