redis服务端关闭 内部的数据消失 为了不让它消失就用到了持久化
1. rdb模式持久化
RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。
第一步,准备一个redis配置文件, rdbredis.conf
写入如下内容
daemonize yes #后台运行redis
port 6379 #redis端口
logfile /data/6379/redis.log #redis日志文件位置
dir /data/6379/ #指定redis数据文件夹放在哪 # 需要自己创建这个 /data/6379 文件夹
dbfilename s17dump.rdb #指定rdb的数据文件
bind 0.0.0.0 #绑定在任何ip上 也就是说可以通过本机存在的任何ip都能访问到这里
requirepass redhat #指定redis的密码
save 900 1 #代表 900秒内 有1个修改key的操作,就进行持久化
save 300 10 # 300秒内 有10个修改类的操作,就持久化
save 60 10000 # 60秒内 有10000个修改类的操作,就持久化
第二步,通过配置文件启动 redis服务端,支持rdb持久化的 服务端
#并且可以通过 save指令 手动触发持久化数据
redis-server rdbredis.conf
auth 密码
set name "haha"
save # 输入这个命令才会持久化
这样就多了一个s17dump.rdb 里面存的是数据 完成了持久化
2. aof持久化模式 ,不需要你手动的save触发持久化
记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。
配置方式如下
1.修改redis的配置文件,如下 ,再次创建一个 新的aof配置文件
touch aofredis.conf # 在redis-4.0.10]# 状态下
#编辑配置文件,写入如下内容
vim aofredis.conf
#写入如下内容 #后台运行redis
daemonize yes
port 6379
logfile /data/6379/redis.log #日志文件
dir /data/6379 #指定redis数据文件夹放在哪 # 需要自己创建这个 /data/6379 文件夹
appendonly yes #开启aof持久化的参数,就是这个
appendfsync everysec #每秒进行一次aof持久化
3.支持aof方式的持久化
redis-server aofredis.conf
4.验证 aof持久化,
写入数据后,杀死进程,
再次启动redis,检查数据
redis-cli 打开客户端
set name "哈哈"
kill -9 进程号
redis-server aofredis.conf 再次启动看看数据在不在,在就成功
#在不重启的情况下,切换rdb数据到aof模式下 开启AOF 关闭RDB
1.环境准备 准备一个rdb的redis数据库,并且是2.0版本以上的
2.登陆此时的rdb数据库,通过两条命令,临时修改 切换到aof模式下,也是吧rdb数据转化为aof的模式
127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能
OK
127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能
OK
3.此时还是临时生效,必须修改配置文件,永久生效
配置文件,修改为如下
[root@master redis-4.0.10]# cat rdbredis.conf
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379/
bind 0.0.0.0
appendonly yes #开启aof持久化的参数,就是这个
appendfsync everysec #每秒进行一次aof持久化