缓存的收益
1、加速读写
通过缓存加速读写速度:CPU L1/L2/L3 Cache 、Linux page Cache 加速硬盘读写
、浏览器缓存、Ehcache缓存数据库结果。
2、降低后端负载
后端服务器通过前端缓存降低负载:业务端使用Redis降低后端MySQL负载等
缓存的成本
1、数据不一致:缓存层和数据层有时间窗口不一致,和更新策略有关
2、代码维护成本:多了一层缓存逻辑
3、运维成本:例如Redis Cluster
使用场景
1、降低后端负载:
对高消耗的SQL:join结果集/分组统计结果缓存。
比如要统计一个TP10排行榜,这个排行榜会设计到很复杂,很耗性能的SQL语句。
如果我们不用缓存,那么每一次请求都要去计算,请求量大的时候就会增加服务器负担,这样做很多时候都是没有意义的,我们只要在某个时间点,计算一次放在缓存里即可,
我们可以第一次或者预先算好放到Redis缓存中,下一次请求直接去访问缓存就好了。
2、加速响应请求
利用Redis/Memcache优化IO响应时间。
Redis是将数据源放在内存中的,这是它天然的优势,减少磁盘IO。假如我们介入了BI,我们可以将BI的结果放在Redis里面,每一次请求都是请求Redis,减轻BI服务器压力
3、大量写合并为批量写
如计数器先Redis累加,再批量写到DB。比如:如果实现一个点赞计数器,每次先Redis incr到内存,incr数据非常的快,然后再批量update mysql中,否则每次update到数据库,对于数据库来说
update 或者insert 对于数据库来说,本来就是比较慢的
网友评论