Redis--06--持久化策略---内存优化策略

Redis持久化

关于Redis持久化的说明

  • redis默认条件下支持数据的持久化操作. 当redis中有数据时会定期将数据保存到磁盘中.
  • 当Redis服务器重启时 会根据配置文件读取指定的持久化文件.实现内存数据的恢复.

持久化方式介绍

  • 一种是RDB持久化(原理是将redis在内存中的数据库记录定时 dump到磁盘上的RDB持久化)
  • 另外一种是AOF(append only file)持久化(原理是将redis的操作日志以追加的方式写入文件)

1.RDB模式

特点:

  1. RDB模式是redis的默认的持久化策略.
  2. RDB模式记录的是Redis 内存数据的快照. 最新的快照会覆盖之前的内容 所有RDB持久化文件占用空间更小 持久化的效率更高.
  3. RDB模式由于是定期持久化 所以可能导致数据的丢失.

命令:

  1. save 要求立即马上持久化 同步的操作 其他的redis操作会陷入阻塞的状态.
  2. bgsave 开启后台运行 异步的操作 由于是异步操作,所以无法保证rdb文件一定是最新的需要等待.

配置:

1.持久化文件名称:
在这里插入图片描述
2.持久化文件位置
dir ./ 相对路径的写法
dir /usr/local/src/redis 绝对路径写法
在这里插入图片描述

3.RDB模式持久化策略
在这里插入图片描述

2. AOF模式

特点:
1.AOF模式默认条件下是关闭的,需要用户手动的开启
在这里插入图片描述
2. AOF模式是异步的操作 记录的是用户的操作的过程 可以防止用户的数据丢失
3. 由于AOF模式记录的是程序的运行状态 所以持久化文件相对较大,恢复数据的时间长.需要人为的优化持久化文件

配置:
在这里插入图片描述

关于持久化操作的总结

  • 一种是RDB持久化(原理是将redis在内存中的数据库记录定时 dump到磁盘上的RDB持久化)
  • 一种是AOF持久化(原理是将redis的操作日志以追加的方式写入文件)
  1. 如果不允许数据丢失 使用AOF方式
  2. 如果追求效率 运行少量数据丢失 采用RDB模式
  3. 如果既要保证效率 又要保证数据 则应该配置redis的集群 主机使用RDB 从机使用AOF

情景题

假设你是项目组长,手下一个特别漂亮的妹子在线上执行了flushALL命令.问:如果是你应该怎么办??
A: 严厉训斥 自己背锅 B: 批评教育,自己快速解决 C:严厉的训斥 之后开除员工

解决方案: 应该将AOF模式中flushAll删除,之后重启redis即可.

Redis内存策略

说明:Redis数据的存储都在内存中.如果一直想内存中存储数据 必然会导致内存数据的溢出.

解决方式:

  1. 尽可能为保存在redis中的数据添加超时时间.
  2. 利用算法优化旧的数据.

LRU算法

特点: 最好用的内存优化算法.

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。

维度: 时间 T

LFU算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数

维度: 使用次数

RANDOM算法

随机删除数据

TTL算法

把设定了超时时间的数据将要移除的提前删除的算法.

Redis内存数据优化

1.volatile-lru 设定了超时时间的数据采用lru算法
2.allkeys-lru 所有的数据采用LRU算法
3.volatile-lfu 设定了超时时间的数据采用lfu算法删除
4.allkeys-lfu 所有数据采用lfu算法删除
5.volatile-random 设定超时时间的数据采用随机算法
6.allkeys-random 所有数据的随机算法
7.volatile-ttl 设定超时时间的数据的TTL算法
8.noeviction 如果内存溢出了 则报错返回. 不做任何操作. 默认值

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值