02. 缓存
缓存
在互联网领域

缓存是软件系统中常见的组成部分,其能够提升系统的请求处理与响应能力,避免重复地处理,快速返回常见的数据:

背景分析
功能与分类

缓存系统的主要功能常常有:
-
数据库缓存:作为数据库与
DAO 层之间的中间缓存,降低对后端数据库的访问压力,高速缓存能使得访问速度达到1ms 级别,例如高频率的数据库查询。 -
临时数据存储:应用程序需要维护大量临时数据,将临时数据存储在缓存系统中,可以降低内存管理的开销,改进应用程序工作负载。例如:在分布式系统中,同一个用户的不同请求可能会发送到不同的服务器上,这时可以用缓存作为全局存储,用于保存
Session 数据、用户的Token 、权限信息等数据。 -
部分数据的持久化存储:此时类似于传统的数据库,将数据存入磁盘中做持久化存储,例如广告推荐类需要离线计算大量数据以及榜单的生成。
我们往往会从系统层、应用层、网络层、用户层等不同的维度去提高缓存机制与策略。客户端缓存也被称为“浏览器缓存”,下载数据的客户端,浏览器,应用程序,其他服务等可以跟踪下载的内容,如果该数据有任何过期时间,则
变更订阅
当今流行的应用开发风格涉及将功能分解为一组通过同步网络请求(如
除了在“消息传递数据流”中列出的优点(如更好的容错性
- 在微服务方法中,处理购买的代码可能会查询汇率服务或数据库,以获取特定货币的当前汇率。
- 在数据流方法中,处理订单的代码会提前订阅汇率变更流,并在汇率发生变动时将当前汇率存储在本地数据库中。处理订单时只需查询本地数据库即可。
第二种方法能将对另一服务的同步网络请求替换为对本地数据库的查询(可能在同一台机器甚至同一个进程中
Links
- https://mp.weixin.qq.com/s/jdOVzGTyi_6mgK7Gkr4yMA
- https://www.zhihu.com/question/319817091/answer/653985863
- https://zhuanlan.zhihu.com/p/70597595
- https://zhuanlan.zhihu.com/p/72671938
Redis 与Mysql 双写一致性方案解析 - https://zhuanlan.zhihu.com/p/91770135 如何保障
mysql 和redis 之间的数据一致性? - https://zhuanlan.zhihu.com/p/74880843
- https://www.zhihu.com/question/26190832/answer/825301105
Cache 和Buffer 都是缓存,主要区别是什么? - https://cubox.pro/c/vBop8Y 本文源自并发编程网的翻译邀请,翻译的是
Jakob Jenkov 的 《软件架构》 中关于缓存技术的内容,虽然是2014 年的文章,但是从软件架构层面上,并不过时。 - https://zhuanlan.zhihu.com/p/106101091 如何保障
mysql 和redis 之间的数据一致性?