Redis 处理

redis的删除机制(定期删除+惰性删除+内存淘汰机制)
1、定期删除:Redis 默认每个 100ms 检查,是否有过期的 Key,有过期 Key 则删除。Redis 不是每个 100ms 将所有的 Key 检查一次,而是随机抽取进行检查(如果每隔 100ms,全部 Key 进行检查,Redis 岂不是卡死)。如果只采用定期删除策略,会导致很多 Key 到时间没有删除。于是,惰性删除派上用场。

2、惰性删除:在你获取某个 Key 的时候,Redis 会检查一下,这个 Key 如果设置了过期时间,那么是否过期了?如果过期了此时就会删除。

3、如果定期删除没删除 Key。然后你也没即时去请求 Key,也就是说惰性删除也没生效。这样,Redis的内存会越来越高。那么就应该采用内存淘汰机制。
在 redis.conf 中有一行配置:# maxmemory-policy allkeys-lru
该配置就是配内存淘汰策略的:
noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。(应该没人用吧)
allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 Key。(推荐使用)
。。。
如果没有设置 expire 的 Key,不满足先决条件;那么 volatile-lru,volatile-random 和 volatile-ttl 等策略的行为,和 noeviction(不删除) 基本上一致。


缓存穿透:大量去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。

一般提供一个能迅速判断请求是否有效的拦截机制(根据时间参数的一套加密措施,除非加密规则被黑客破解)。

缓存雪崩:即缓存已经炸了或者大量缓存集中在某一个时间段失效,这个时候又来了很多请求,结果请求都怼到数据库上,从而导致数据库连接异常。
一般使用二级缓存(比如ehcache本地缓存)、关键点降级限流排队、重要资源隔离(比如:让每种重要资源都单独运行在自己的线程池中)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值