RDB
和AOF
定时间间隔执行数据集的时间快照,把某一时刻数据和妆容以文件的形式写到磁盘上,也就是快照。
如果是普通安装方式可以跳过,如果是docker安装,需要到官网下载redis.conf
配置文件到本地,地址如下
http://download.redis.io/redis-stable/redis.conf
创建存放rediscon
f文件夹如果不想存放到这里也可以换一个地方;创建完成后将下载好的配置文件拖入到里面
mkdir - p /home/docker/redis/config
设置redis
的data
存放目录,如果不想存放到这里;也可以换一个地方
mkdir -p /home/docker/redis/data
拉取镜像
docker pull redis
运行redis
,这里路径就是上面我配置的路径
docker run -p 6379:6379 --name redis \
-v /home/docker/redis/config/redis.conf:/etc/redis/redis.conf \
-v /home/docker/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes
如果需要设置开机启动
docker update --restart=always redis
进入镜像的Redis,可以看到配置文件已存在
docker exec -it redis bash
cd /etc/redis/
之后只需要在外面修改配置文件,里面的配置文件也会跟着改,这样就不用切换到镜像内部去改配置文件了
save 5 2
修改保存文件到/data/redis/dumpfiles
,文件夹一定要先存在
# 可以先使用命令
mkdir -p /data/redis/dumpfiles
**修改配置文件 **
dir /data/redis/dumpfiles
# 获取文件目录
config get dir
获取密码
CONFIG GET requirepass
获取端口号
CONFIG GET port
Redis默认是有数据保存的功能,但是只是在停机的时候,如果这时候突然宕机数据还是会丢失。
RDB
RDB
文件(dump.rdb
),其中RDB
就是Redis
就是Redis DataBase
缩写也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis
实例故障重启后,从磁盘读取快照文件,恢复数据。
快照文件称为RDB
文件,默认是保存在当前运行目录。
RDB
文件RDB
文件RDB
会在什么时候执行?save 60 1000代表什么含义?
RDB
RDB
的缺点?
RDB
之间写入数据有丢失风险RDB
文件都比较耗时save
由Redis
主进程来来执行RDB
,会阻塞所有命令,这种方式并不推荐。
# 900秒内有一次修改就执行
save 900 1
# 300 秒内有10次修改就执行
save 300 10
# 60秒内有10000次修改就保存
save 60 10000
RDB
的其它设置可以在redis.conf
配置中设置
# 是否压缩,建议不开启因为会消耗CPU
rdbcompression yes # 默认是开启的
# RDB文件名称
dbfilename dump.rdb
bgsave
开启子进程来执行RDB
,避免主进程受到影响。子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB
文件。
fork采用的是copy-on-write技术,会创建一个新的RDB
文件会替换旧的RDB
文件。
AOF
AOF
全称为Append 0nly File
(追加文件)。Redis
处理的每一个写命令都会记录在AOF
文件,可以看做是命令日志文件。
也是解决RDB
的缺点,开启方式,修改redis.conf
正常都是使用appendfsyns everysec
# 是否开启AOF,默认是no
appendonly yes
# AOF文件的名称
appendfilename "appendonly.aof"
# 表示每执行一次写命令,立即记录到AOF文件
appendfsync always
# 写命令执行先放入AOF缓冲 区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认安装
appendfsync everysec
# 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写入磁盘
appendfsync no
因为是记录命令,AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof
命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。
# AOF文件比上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
# AOF文件体积最小多大以上才触发重写
auto-aof-rewrite-min-size 64mb
次写操作才有意义。通过执行bgrewriteaof
命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。
# AOF文件比上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
# AOF文件体积最小多大以上才触发重写
auto-aof-rewrite-min-size 64mb