文章目录
书接上文,我们学习了redis的基础运用和常用命令,那我们就来了解redis的两大核心持久化机制RDB和AOF,以及数据恢复与备份。
一、Redis的持久化概念 ?
1:Redis持久化
因为Redis数据基于内存读写,为了防止Redis服务器关闭或者宕机造成数据丢失,我们通常需要对Redis做持久化化,即:把内从中的数据(命令)保存一份到磁盘做一个备份,当Redis服务关闭或者宕机,在Redis服务器重启的时候会从磁盘重新加载备份的数据,不至于数据丢失。 Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.
开启持久配置后,对Redis进行写操作,在Redis安装目录将会看到持久文件:“appendonly.aof”和“ dump.rdb”。
redis为了考虑效率,保存数据在内容中.并且考虑数据安全性,还做数据持久化,如果满足保存策略,就会把内存的数据保存到数据rdb文件,还来不及保存那部分数据存放到aof更新日志中。在加载时,把两个数据做一个并集。
Redis持久化原理图:
二、Redis持久配置
上书我们学习过Redis的目录结构,我们只用找到redis.windows.conf 的配置文件
AOF 持久化记录服务器执行的所有写操作命令
,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
按住Ctrl + F快速定位搜索:appendonly定位到相关内容,将no改为yes,appendfsync默认不改。
# appendfsync always #每次有新命令时就执行一次fsync
appendfsync everysec #每秒 fsync 一次 ,这里我们启用 everysec
# appendfsync no #从不fsync(交给操作系统来处理,可能很久才执行一次fsync)
RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式
save ""
save 900 1 #至少在900秒的时间段内至少有一次改变存储同步一次
save 300 10
# save 60 10000
三、RDB和AOP区别
RDB:记录数据快照
优点:
1.产生一个持久化文件,方便文件备份 , 恢复RDB是非常不错的选择
2.Fork子进程去持久化, 性能比AOF好,文件体积更小,启动时恢复速度快
缺点:
1.没办法100%s数据不丢失
2.数据集大,FORk子进程持久化时会服务器卡顿
AOF: 记录写命令
优点:
1.数据更安全
2.采用Append,即使持久的时候宕机,也不影响已经持久的数据
3.日志过大,可以rewrite重写
4.AOF日志格式清晰,容易理解
缺点:
1.AOF文件通常要大于RDB文件
2.AOF数据恢复比RDB慢
最佳实践:二者结合 ,RDB来数据备份,迁移,容灾 。 AOF持久化保证数据不丢失。
四、数据备份与恢复
虽然配置了持久化Redis会进行自动数据备份,我们也可以通过SAVE
或者 BGSAVE
(后台备份)命令创建当前数据库的备份
数据备份执行:save #该命令将在 redis 安装目录中创建dump.rdb文件。
恢复数据:将dump.rdb) 移动到 redis 安装目录并启动服务即可。
五、快速启动小技巧
redis的安装目录新建txt文件,将我们的redis的启动脚本写入,改变文件后缀名为bat,发送快捷方式到桌面就可以,一键启动了。txt文件内容:redis-server.exe redis.windows.conf 关于bat脚本命令,大家可以自行学习。
总结
以上就是今天要讲的内容,对接上书做一个新的扩展,后面将会从项目上细讲Redis的运用。