2020 12 16 关于Redis持久化的问题

1、什么是持久化?

Redis运行环境在内存中,如果Redis服务器关闭,则内存数据将会丢失
解决方案:可以定期将内存数据持久化到磁盘中。
当redis正常运行时,定期的将数据保存到磁盘中,当redis服务器重启时,则根据配置文件中指定的持久化的方式,实现数据的恢复。

RDB模式

RDB模式特点说明

  1. RDB模式是redis默认的策略
  2. RDB模式能够定期(时间间隔)持久化。弊端是可能导致数据的丢失
  3. RDB模式记录的是内存数据的快照,持久化效率较高,快照只保留最新的记录

RDB模式命令

1.save命令: 将内存数据持久化到磁盘中 主动的操作 会造成线程阻塞
2.bgsave命令: 将内存数据采用后台运行的方式,持久化到文件中. 不会造成阻塞.
3.默认的持久化的机制
save 900 1 如果在900秒内,执行了1次更新操作,则持久化一次
save 300 10 如果在300秒内,执行了10次更新操作,则持久化一次
save 60 10000 如果在60秒内,执行了10000次更新操作,则持久化一次

AOF模式

AOF模式特点

  1. AOF模式默认条件下是关闭的,需要手动开启
  2. AOF模式记录的是用户的操作过程,所以可以实现实时持久化操作
  3. AOF模式由于记录的是实时的操作过程,所以持久化文件较大,需要定期维护

持久化操作总结

  1. 当内存数据允许少量丢失时,采用RDB模式(快)
  2. 当内存数据不允许丢失时,采用AOF模式(定期维护持久化文件)
  3. 一般在工作中采用RDB+AOF模式共同作用,保证数据的有效性

内存优化策略

为什么需要内存优化?
说明:由于redis在内存中保存数据,如果一直存储,则内除数据必然溢出,所以需要定期维护内除数据的大小。
维护策略:删除旧的不用的数据,保留新的常用的数据。

那么有哪些常用内存优化算法呢?

LRU算法

LUR 是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面的时候,选择现有页面只其t值最大的,即最近最少使用的页面予以淘汰。
计算维度:时间 t
注意事项:LRU算法是迄今为止内存中最好用的数据置换算法

LFU算法

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

随机算法

TTL算法(提前删除)

根据剩余的存活时间,将马上要超时的数据提前删除

关于缓存遇到的问题

由于缓存失效,导致大量的用户的请求,直接访问数据库服务器。导致负载过高,从而引用整体宕机的风险

缓存穿透

说明:用户频繁访问数据库中不存在的数据,可能出现缓存穿透的现象。如果该操作是高并发操作,则可能直接威胁数据库服务器。
解决方案:

  1. 采用IP限流的方式 降低用户访问服务器次数。IP动态代理(1分钟变一次)
  2. 微服务的处理方式:利用断路器返回执行的业务数据即可不执行数据库操作 从而保护了数据库
  3. 微服务的处理方式:API网关设计。不允许做非法操作

缓存击穿

说明:由于redis中某个热点数据由于超时/删除等操作造成数据失效。同时用户高并发访问该数据,则可能导致数据库宕机。该操作称之为 缓存击穿
解决方案:可以采用多级缓存的设计。同时数据的超时时间采用随机数的方式

缓存雪崩

说明:由于redis内存数据大量失效。导致用户的访问命中率太低。大量的用户直接访问数据库,可能导致数据库服务器宕机。这种现象称之为缓存雪崩
解决:

  1. 采用多级缓存
  2. 设定不同的超时时间
  3. 禁止执行flushAll 等敏感操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值