一、RDB持久化

(一)、RDB介绍

可以在指定的时间间隔内生成数据集的 时间点快照(point-in-time snapshot),新快照会覆盖老快照

(二)、优点

压缩格式,恢复速度快,适合于用做备份,主从复制也是基于RDB持久化功能实现的

(三)、缺点

不是实时的,会有数据丢失,操作比较重量

(四)、原理

(五)、配置方法

第一步:修改配置文件

vim /data/6379/redis.conf

#添加
dir /data/6379                  #持久化文件存储位置
dbfilename dump.rdb      #RDB持久化数据文件
save 900 1                        #900秒内如果有一次变更则进行一次持久化
save 300 10                      #300秒内如果有10次变更则进行一次持久化
save 60 10000                  #60秒内如果有10000次变更则进行一次持久化

第二步:重新启动redis

redis-cli -a 123456 shutdown
redis-server /data/6379/redis.conf

注意事项

1、没配置save参数时

1.shutdown/pkill/kill都不会持久化保存

2.可以手动执行bgsave

3、配置save参数时

1.shutdown/pkill/kill均会自动触发bgsave持久化保存数据

2.pkill -9 不会触发持久化

3、恢复时

1.持久化数据文件名要和配置文件里定义的一样才能被识别

2.RDB文件只有一个数据文件,迁移和备份只要这一个RDB文件即可

二、AOF持久化

(一)、AOF介绍

AOF(append-only log file):记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集

AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾

(二)、优点

可以最大程度保证数据不丢

(三)、缺点

日志记录量级比较大,持久化时间较长

(四)、原理

(五)、配置方法

第一步:修改配置文件

vim /data/6379/redis.conf

#添加
appendonly yes            #开启AOF持久化
appendfilename "redis.aof"      #持久化存储文件
appendfsync always     #每次操作成功都执行一次持久化
#或者  建议设置
appendfsync everysec  #每秒钟提交一次持久化
#或者
appendfsync no            #不进行持久化

第二步:重启redis

redis-cli -a 123456 shutdown
redis-server /data/6379/redis.conf

(六)、AOF重写机制

1、重写机制原理

(1)redis主进程通过fork创建子进程

(2)子进程根据当前redis内存中的数据生成数据库重建命令序列到临时文件中

(3)父进程继承client的新请求,把请求中的写操作继续追加至原来的AOF文件(而不是直接写入临 时文件,避免写操作失败带来的问题);额外地,这些新的写请求还会被放置于一个缓冲队列中

(4)子进程重写完成,会通知父进程,父进程把缓冲中的命令写到临时文件中

(5)父进程将临时文件替换掉旧的AOF文件

2、重写机制注意事项

和RDB一样,如果当前的数据量巨大,那么创建子进程的过程会很耗时。

在大数据的处理工作中,文件的删除也是一项比较麻烦的工作。

像我们普通的笔记本电脑,删除一个几GB的文件都是一项很耗时的工作,

更何况大数据的量级远远大过我们日常使用的数据。

所以在替换aof文件时,如果旧的aof很大,删除它也是一个很耗时的过程。

当然这并不是aof或者redis的缺点,只是可能会出现的一个客观情况

AOF注意事项

1.aof修复命令不要⽤,因为他的修复⽅案⾮常粗暴,⼀⼑切,从出错的地⽅到最后全部删除

2.任何操作之前,先备份数据

三、redis 持久化方式有哪些?有什么区别?

rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能

aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog

四、save bgsave 区别?

共同点:都能实现redis持久化功能。

不同点:

SAVE: 前台,阻塞redis正常写入,直到持久化完成。

BGSAVE:后台,开启子线程,异步的持久化功能,不会阻塞redis正常写入。

五、AOF和RDB如何选择

1.开启混合模式

2.开启aof

3.不开启rdb

4.rdb采⽤定时任务的⽅式定时备份

5.可以从库开启RDB进⾏备份

redis内存淘汰和持久化_redis 持久化相关推荐

  1. redis aof 备份和恢复_Redis 持久化机制的介绍,了解这些流程很重要

    我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的. 企业级redis集群架构:海量数据.高并发.高可用 持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去,比如你r ...

  2. Redis内存淘汰机制

    Redis内存淘汰机制 网趣科技 2016-09-06 13:26 摘要 Redis是一款优秀的.开源的内存数据库,我在阅读Redis源码实现的过程中,时时刻刻能感受到Redis作者为更好地使用内存而 ...

  3. Redis内存淘汰策略LRU、LFU详解

    Redis内存淘汰原因 Redis是一种内存数据库,redis的容量往往有限,无法存放所有的数据.当内存满了的时候,并且这个时候还需要往Redis中放入新的数据,就需要将Redis中的一部分数据淘汰了 ...

  4. redis内存淘汰和持久化_REDIS的淘汰机制与持久化

    1. 理解淘汰机制 1.1. 内存回收策略 Redis内存回收机制主要体现在以下两个方面: 1. 删除到达时间的键对象. 2. 内存使用达到maxmemory上限时触发内存溢出控制策略. 1.1.1. ...

  5. redis 怎么关闭写盘_Redis持久化策略

    全是干货的技术号: 本文已收录在github,欢迎 star/fork:https://github.com/Wasabi1234/Java-Interview-Tutorial Redis 对外提供 ...

  6. redis 设置不过期_面试时 Redis 内存淘汰总被问,但是总答不好,怎么解决?

    什么是内存淘汰 内存淘汰,和平时我们设置redis key的过期时间,不是一回事:内存淘汰是说,假设我们限定redis只能使用8g内存,现在已经使用了这么多了(包括设置了过期时间的key和没设过期时间 ...

  7. Redis内存淘汰策略

    目录 一.Redis六种淘汰策略 二.如何配置Redis淘汰策略 将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据. 一.Redis六种淘汰策略 noeviction:当内存使用达到阈值 ...

  8. 怎么让修改的html持久化_redis持久化机制

    redis 有 RDB 和 AOF 两种持久化机制,这两种机制可以共存. 可以通过修改redis.conf配置文件中的 dir 参数来改变生成的 dump.rdb 和 appendonly.aof 这 ...

  9. 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)

    redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...

最新文章

  1. 突破电信3G宽带对网页浏览的上网限制
  2. 34 个火爆全网的Python开源框架
  3. 【Kali渗透全方位实战】利用Beef进行XSS会话劫持(XSS Stored)
  4. ecmall类关系图(转)
  5. SAP CRM点了附件的超链接后报错的处理方式
  6. System.Windows.Forms.Timer与System.Timers.Timer的区别
  7. 【软件开发底层知识修炼】二十三 ABI-应用程序二进制接口三之深入理解函数栈帧的形成与摧毁
  8. nginx php分离,nginx-php配置动静分离
  9. java反射用法示例_Java包| 类型,用法,示例
  10. 初学总结--------Java修饰符与修饰关键字(且叫修饰关键字)
  11. 在学习js的然后写代码的过程中我老是找不到思路怎么办?
  12. 命名参数_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
  13. 俄罗斯方块c语言教程codeblocks,C语言俄罗斯方块修改结尾
  14. [转]NHibernate中DateTime,int,bool空值的处理方法
  15. 计算机卡死后自动关机,电脑经常卡住自动关机怎么办
  16. [每日一氵]笔记本电脑充电后卡得一批
  17. 加工奶制品的生产计划 lingo代码
  18. Invoking “make cmake_check_build_system“ failed
  19. JAVA--建立一个可输入个人信息的窗口
  20. Mysql 中使用UUID做为主键,去掉- 横线

热门文章

  1. 编写一个C程序,实现以下功能:动态申请长度为5的整数空间数组,用户输入5个整数;动态扩展数组空间为8,用户另外输入3个整数,最后输出扩展后的全部数组元素。
  2. html添加子节点方法,HTML DOM appendChild() 方法
  3. arraylist数据5万占内存_2021年北京市高考报名人数会超过5万吗?大数据告诉您结果...
  4. qt编写触摸事件的关键
  5. Python 条件判断 if/else - Python零基础入门教程
  6. linux登录界面输入密码时卡住6,centos6.8(虚拟机VNC)输入正确用户名和密码仍跳回登录界面...
  7. html自动图片尺寸,关于html:CSS背景图像适合宽度,高度应按比例自动缩放
  8. asyncio oracle 异步,带有asyncio futures和RuntimeError的InvalidStateError与aiohttp时使用期货回调...
  9. linux创建a1的硬链接a2,Linux命令-重定向和软硬链接
  10. 卸载 windows_Windows 10可能很快会自动卸载有问题的Windows更新