RDB和AOF持久化
Redis
是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis
提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。
5.1 RDB持久化
- 分两种情况 可以手动执行 也可以配置文件自动定期执行
- 触发机制:
- 手动在redis数据库中执行save命令
- conf中配置触发条件, save 200 10 表示200秒内有10个修改类的操作就会执行保存
-
建立redis配置文件
配置文件 s21_rdb.conf 内容如下 ,有关rdb的配置参数是 dbfilename dbmp.rdb save 900 1 daemonize yes port 6379 logfile /data/6379/redis.log #没有需要创建这个 mkdir -p 递归创建 dir /data/6379 #定义持久化文件存储位置 dbfilename s21redis.rdb #rdb持久化文件 bind 127.0.0.1 #redis绑定地址 requirepass redhat save 900 1 save 300 10 save 20 2 #在20秒内,超过2个修改类的操作
-
根据上述的设置,只要修改次数 满足save的设置就会在 规定的dir位置生成对应的文件名称的存储文件。另一种方式是直接在redis交互环境下 可以直接使用命令 save进行存储。
127.0.0.1:6379> save OK
-
这种方式存储的 rdb存储文件 为二进制文件 不可读
5.2 AOF持久化
-
AOF机制, 将你的修改类的操作命令,直接追加到日志文件中
-
同样需要修改aof的配置文件,添加如下参数。核心功能参数是
appendonly yes appendfsync always 总是修改类的操作 everysec 每秒做一次持久化 no 依赖于系统自带的缓存大小机制
-
创建aof配置文件s21aof.conf ,内容如下
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 appendonly yes appendfsync everysec #每秒做一次持久化
-
以这个conf文件开启redis后,在data目录下会有对应的aof文件,此时每次有修改操作就会读入这个文件。通过这样的机制达成持久化存储。
-
优缺点
- 优点:最大程序保证数据不丢
- 缺点:日志记录非常大
5.3 redis不重启 RDB切换到AOF存储
-
前提:保证 redis 保证是 4.0版本以上
redis-server -v
-
redis.conf 服务端配置文件
daemonize yes port 6379 logfile /data/6379/redis.log dir /data/6379 #定义持久化文件存储位置 dbfilename s21redis.rdb #rdb持久化文件 bind 127.0.0.1 #redis绑定地址 requirepass redhat save 900 1 save 300 10 save 20 2 #在20秒内,超过2个修改类的操作
-
正常通过 RDF启动redis
redis-server s21_rdb.conf redis-cli
-
执行AOF转化持久化命令
127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能 OK 127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能 OK
-
注意:想要永久切换为aof,还得修改配置文件方可