我们今天来讨论一下使用缓存后会有哪些收益与成本,我们接下来分为收益、成本、使用场景三部分来讨论
一、收益
1.加速读写
- 通过缓存加速读写速度:CPU L1/L2/L3 Cache、Linux page Cache加速硬盘读写、浏览器缓存、Ehcache缓存数据库结果
- 收益是比较明显的,例如Redis、Memcache都是性能非常高的数据库,但是加速读写是相对的,并不是说MySQL之类的数据库性能不够好,只是Redis性能会更高。
2.降低后端负载
- 后端服务器通过前端缓存降低负载: 业务端使用Redis降低后端MySQL负载等
- MySQL并不是一个面向前端的大流量数据库,例如每秒10万的并发MySQL就比较吃力了,尤其是涉及一些大量数据的SQL就更慢了。
所以说使用缓存的收益主要就是两点:加速读写和降低后端负载
二、成本
我们来看一下成本
1.数据不一致
- 缓存层和数据层有时间窗口不一致,和更新策略有关。
2.代码维护成本
- 多了一层缓存逻辑。
- 原本只需要读写MySQL就能实现功能,但加入了缓存之后就要去维护缓存的数据,增加了代码复杂度。
3.运维成本
- 例如Redis Cluster
三、使用场景
最后我们来看一下缓存的使用场景。
1.降低后端负载
- 对高消耗的SQL:join结果集/分组统计结果缓存。
- 例如做一个排行榜的计算需要涉及很多很多表,但是我们只需要最终的计算结果。如果每次都去进行统计的话将会消耗大量的资源,这时候只需要放在缓存中读写就不需要计算了。
2.加速请求响应
- 利用Redis/Memcache优化IO响应时间。
3.大量写合并为批量写:
- 如计数器先Redis累加再批量写DB。
- 类似于秒杀系统、投票系统等,不需要每次都写DB,可以先写在Redis里再定时写入DB,这样会大量节省DB的消耗
更多好文
请扫描下面二维码
欢迎关注~