为什么缓存有这么多的弊端,使用的人还有这么多?
文源网络,仅供学习之用,如有侵权请联系删除。 缓存的使用,是一个逐渐演进的过程。 问一下你自己,最直接的使用缓存的原因是什么? 无它,唯快而已! 追溯一下自己最开始使用缓存的场景,一些数据库里存储的不变的配置信息,服务启动时,直接加载到本地公共模块,方便其它功能模块共享使用。这便是最基本,最简单的本地缓存应用。 一、服务与缓存 所谓的服务,简而言之,一层应用 + 一层数据,应用从数据层获取数据然后加工输出。 数据层,通常我们指的是持久化介质上的持久化存储。它有多种形式的,可以是文件,或者数据库。 数据存储在持久化介质上,而应用运行与内存中。内存和持久化介质是两个有着量级速度差别的不同介质,由此,应用和数据之间便有了“矛盾”。 有了这“矛盾”的引子,便有了对缓存的迫切需求。 我们说的缓存,必然要是存放于内存中的,这样它便能距离应用更近,更快的给出应用所需要的数据,以获得更快的服务响应。 当然,并不是缓存完全隔绝持久层数据。缓存,伴随而生的一个词叫做命中率。 当我们查询的数据存在于缓存中的时候,我们称之为“命中”,此时,所需数据可以直接由缓存提供。 而对于未“命中”的数据,则需要穿过缓存层,进一步去持久化数据层获取。此种情景,我们称之为缓存穿透。 数据获取之后,在返回给应用之前,我们需要重新填充缓存,以供下一次“命中”查询。 当然,上述我们所述只是指“读”查询情景。