Redis的持久化及内存优化

Redis持久化策略
redis运行在内存中,防止服务器关闭而导致的内存数据丢失
——定期将内存数据持久化到磁盘中
一、RDB模式
redis的默认策略,能够定期持久化(时间间隔),但是可能会导致数据的丢失。它记录的是内存数据的快照,只保留最新的记录
1.save命令:将数据存储到磁盘中

二、AOF模式
	AOF模式默认关闭,记录的是用户的操作过程,可以实现实时持久化操作,持久化文件较大,要定期维护
	一旦开启AOF模式,以AOF为准
**

内存优化策略

原则:删除旧数据,保留新的数据
一:LRU算法
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。
计算维度:时间T
是目前最好的数据置换算法
二:LFU算法
LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
三:随机算法
四:TTS算法
五:LRU算法
volatile-lru在设定了超时时间的数据中采用LRU算法
allkeys-lru在所有数据中采用LRU算法
volatile-random 在超时数据中采用随机算法
allkeys-random 所有数据随机
volatile-ttl 将超时数据提前删除
noeviction 默认规则 如果设定了则不删除数据 报错返回

出发点:由于缓存失败,导致大量的用户请求直接访问数据库

缓存穿透
说明:用户频繁访问数据库里不存在的数据时,如果该操作是高并发操作,则会直接威胁服务器数据库。
解决方案:1.采用IP限流的方式,降低用户的访问服务器的数次 ——IP动态代理
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、付费专栏及课程。

余额充值