缓存设计的核心要素

1、容量规划

  • 缓存内容的大小(缓存的数据不易过大,尤其是redis,单线程模式,数据过大容易阻塞其他处理请求)
  • 缓存内容的数量
  • 淘汰策略
  • 缓存的数据结构
  • 每秒的读峰值
  • 每秒的写峰值

2、性能优化

  • 线程模型
  • 预热方法
  • 缓存分片
  • 冷热数据的比例

3、高可用

  • 复制模型
  • 失效转移
  • 持久策略
  • 缓存重建

4、缓存监控

  • 缓存服务监控
  • 缓存容量监控
  • 缓存请求监控
  • 缓存响应时间监控

5、注意事项

  • 是否可能发生缓存穿透  ( 缓存穿透:使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要穿透到后端数据库系统进行查询,使数据库压力过大)
  • 对于高并发的缓存使用,需要对无效的key进行缓存,以抵挡恶意或者无意的对无效缓存查询的攻击或者影响。
  • 是否有大对象
  • 是否使用缓存实现分布式锁
  • 是否使用缓存支持的脚本LUA
  • 是否避免了 race condition
  • 任何缓存的key都必须设置缓存失效时间,且失效时间不能集中在某一个时间点上,需要对key的过期时间进行随机设置,否则会导致缓存沾满内存或者缓存雪崩。
  • 对于存储较多value的key,尽量不要使用HGETALL等集合操作,该操作会造成阻塞影响其他应用的访问
  • 使用本地缓存(如ehcache)时,一定要严格控制缓存对象的数量和生命周期,由于JVM的特性,过多的缓存对象会极大的影响JVM的性能,甚至导致内存溢出。
  • 使用缓存时,一定要有降级处理!尤其是针对关键业务,缓存有问题或者失效时也要能回溯到数据库进行处理
  • 在使用远程缓存(如redist,memcached)时,一定要对操作超时时间进行设置,希望是100毫秒以内。
  •  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值