缓存使用的一些总结

缓存:

缓存好处:

  1. 加速读写
  2. 降低后端负载(例如很复杂的sql)
  3. 加速请求响应,对数据缓存,例如redis可以达到万次的读写速度

成本:

  1. 数据不一致, 缓存与数据库的数据不一致(跟更新策略有关系)
  2. 代码成本: 需要处理缓存与数据库层的逻辑,代码增加
  3. 运维成本增加

更新策略:
LRU(最近最少访问),LFU(访问频率,最少访问换出),FIFO(先进先出)
超时剔除

主动更新(真实数据更新主动通知缓存更新,代码或者通过消息队列等进行通知更新)

缓存穿透:
缓存空对象: 缓存不命中,然后回数据库查询, 查询为空, 不缓存,
如果攻击者一直利用缓存穿透则可能对数据库照成很大压力,甚至宕掉

可以对对于数据进行缓存,但是会带来内存空间消耗,如果是大量攻击,则可能会大量内存,也可能照成宕机

布隆过滤器, 将关键的key进行缓存,例如id, 做第一层的缓存。

雪崩:

缓存层不能提供服务, 则数据库层将直接处理所有请求,则所有压力在于数据库层,可能造成进一步宕机, 引起雪崩效应

优化:

  1. 保障缓存层高可用
  2. 将后端进行限流,降级

热点key重建优化

热点key,一般并发量非常大
重建不可能在短时间内完成

因此:
减少重建次数
数据尽可能一致

互斥锁。加锁进行重建更新

由于操作系统拥有swap, 利用磁盘做虚拟内存,扩展内存,但这样容易照成缓存性能下降,因此一般禁用缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值