缓存的使用和设计

缓存的收益和成本

1.收益
加速读写。 cpu L1/L2/L3 Cache 浏览器缓存
降低后端负载:后端服务器通过前端缓存降低负载

2.成本
数据不一致:缓存层和数据层有时间窗口不一致
代码维护成本
运维成本:Redis cluster

3.使用场景
.对高消耗的SQL:join 结果集统计结果缓存
加速请求响应
大量些合并为批量写。

缓存更新策略

1.LRU/LFU:maxmemory-policy 一致性最差
2.超时剔除:例如expire 一致性较差
3.主动更新:;开发控制生命周期 一致性强 维护成本高

缓存粒度控制

缓存过程:1.从mySQL 获取用户信息 2.设置用户缓存 3.缓存粒度:全部属性?部分属性
1.通用性:全量属性更好
2.占用空间:部分属性更好
3.代码维护:表面上全量属性更好

缓存穿透优化

缓存穿透:大量请求不存在(存储层也没有数据)
1.业务代码自身问题
2.恶意攻击、爬虫

解决方案一:缓存空对象(cache 设置过期时间,减少storage 层压力)【不一致?】
解决方案二:布隆过滤器拦截(在cache 层之前设置拦截)

无底洞问题优化

问题描述:3000 memcache 节点,‘加’机器性能反而下降。批量mget mset。
优化IO:命令本身优化,减少网络通信次数,降低接入成本。
1.串行mget o(keys)网络传输时间
2.串行IO O(nodes)网络时间
3.hash_tag O(1) 网络时间

热点key 重建优化

1.热点key+较长的重建
(大量线程做缓存重建的过程)
三个目标:
减少缓存重建的次数
数据尽可能一致
减少潜在危险
两种解决:
互斥锁:查询数据源和重建过程被锁。(等待过程没有避免,减少重建操作)
永不过期:为每个value 添加逻辑过期时间,超过逻辑过期时间,单独线程去构建缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值