最便宜云主机永久免费,南昌seo站外优化,wordpress外网,想做无货源电商怎么入手//来源[01,05]分布式缓存 除了黑马#xff0c;还参考了别的。 目录 1.单点redis问题及解决方案2.为什么需要持久化#xff1f;3.Redis持久化有哪些方式呢#xff1f;为什么我们需要重点学RDB和AOF#xff1f;4.RDB4.1 定义4.2 触发方式4.2.1手动触发save4.2.2被动触发bgsa…//来源[01,05]分布式缓存 除了黑马还参考了别的。 目录 1.单点redis问题及解决方案2.为什么需要持久化3.Redis持久化有哪些方式呢为什么我们需要重点学RDB和AOF4.RDB4.1 定义4.2 触发方式4.2.1手动触发save4.2.2被动触发bgsave配置bgsave的流程什么时候会执行bgsave在快照时服务崩溃怎么办 4.3 rdb的缺点4.4 rdb的优点 5.AOF持久化5.1定义5.2 配置5.3 为了解决AOF文件体积膨胀的问题Redis提供AOF文件重写机制 6.RDB和AOF对比7.RDB和AOF混合方式8.两者都有时如何从持久化中恢复数据 1.单点redis问题及解决方案
数据丢失问题实现redis数据持久化 并发能力问题搭建主从集群实现读写分离 故障恢复问题利用Redis哨兵实现健康检测和自动恢复 存储能力问题搭建分片集群利用插槽机制进行动态扩容
2.为什么需要持久化
Redis是个基于内存的数据库。服务一旦宕机内存中的数据将全部丢失。 通常的解决方案是从后端数据库恢复这些数据但后端数据库有性能瓶颈如果是大数据量的恢复1、会对数据库带来巨大的压力2、数据库的性能不如Redis。导致程序响应慢。 所以对Redis来说实现数据的持久化避免从后端数据库中恢复数据是至关重要的。
3.Redis持久化有哪些方式呢为什么我们需要重点学RDB和AOF
从严格意义上说Redis服务提供四种持久化存储方案RDB、AOF、虚拟内存VM和 DISK STORE。但目前官方明确支持的只有前两种方案。
4.RDB
4.1 定义
RDBredis数据备份文件redis数据快照。 把内存中的所有数据都记录到磁盘中当redis实例故障重启后从磁盘中读取快照文件恢复数据。 快照文件称为RDB文件默认是保存在当前运行目录。再次启动时自动读取rdb文件。
4.2 触发方式
4.2.1手动触发save
save命令由redis主进程执行rdb会阻塞所有进程。 默认是服务停止时才会执行。
4.2.2被动触发bgsave
开启子进程后台执行rdb避免影响主进程。
配置
在redis.conf配置文件中写save x y (在x秒内如果至少有y个key被修改则执行bgsave) 如果是save ”则表示禁用rdb。 配置文件中也可以配置rdb的其他配置。
bgsave的流程
bgsave开始时fork主进程得到子进程子进程共享主进程的内存完成fork后读取内存数据并写入rdb文件替换旧的rdb。 共享子进程拷贝主进程的页表子进程操作自己的虚拟内存时映射到跟主进程相同的物理内存区域。只有fork时需要对主进程阻塞拷贝虚拟页表。 如果子进程读取数据时主进程在修改数据怎么办 fork采用的是copy-on-write技术。主进程要写一块数据时拷贝一份原数据的副本子进程读取副本数据同时主进程可以在原来的数据上写。 极端情况下所有数据都要修改都有拷贝占用极大的内存。
什么时候会执行bgsave
在快照时服务崩溃怎么办
在快照操作过程中不能影响上一次的备份数据。Redis服务会在磁盘上创建一个临时文件进行数据操作待操作成功后才会用这个临时文件替换掉上一次的备份。
4.3 rdb的缺点
RDB方式实时性不够无法做到秒级的持久化只能恢复快照之前的数据 每次调用bgsave都需要fork子进程fork子进程属于重量级操作频繁执行成本较高
4.4 rdb的优点
快照使用的算法大大压缩了文件大小用于备份、全量复制等场景 Redis加载RDB文件恢复数据要远远快于AOF方式
5.AOF持久化
5.1定义
Append only file追加文件。Redis处理的每一个写命令都会追加在aof文件可以看作是命令的日志文件。恢复时读取aof的命令并执行。
5.2 配置
在配置文件中开启 先写到缓冲区缓冲区在内存中到时候再写到磁盘中。
5.3 为了解决AOF文件体积膨胀的问题Redis提供AOF文件重写机制
因为记录命令所以aof文件比rdb大很多。 执行bg rewrite aof消除冗余命令用最少的命令完成一样的效果。比如对同一个key的多次写只有最后一次写是有意义的。
执行过程AOF重写过程是由后台子进程完成的。主线程fork出后台的bgrewriteaof子进程bgrewriteaof子进程拷贝一份主进程的内存这里包含了最新数据。然后bgrewriteaof子进程就可以在不影响主线程的情况下逐一把拷贝的数据写成操作记入重写日志。
6.RDB和AOF对比 总结rdb文件体积小启动快数据不完整占用资源多。
7.RDB和AOF混合方式
Redis 4.0 中提出了一个混合使用 AOF 日志和内存快照的方法。 简单来说内存快照以一定的频率执行在两次快照之间使用 AOF 日志记录这期间的所有命令操作。
8.两者都有时如何从持久化中恢复数据
优先加载aof。因为AOF保存的数据更完整。