缓存知识总结

缓存是一个范围相当大的概念。我们可以按前后端分,可以按缓存类型特点分。 从我个人角度而言,事实上任何有数据的地方都可以有缓存。在这里我想首先从自己接触并使用的缓存开始讲起。

我目前用到的缓存是在一个服务器项目里的一个例子。简单的原理如下。

service A需要提供数据给另外几个services:B, C,D调用。如下:

而A服务器每次都需要去数据库里请求对应的数据返回给调用者。后来专门为A服务器做了一个Client,这个Client里面定义了一个map,用于存储从A服务器中获得的数据。

因此当其他程序要从A中取数据的时候,就先判断这个map当中有没有需要的数据,若有,就不用向A发请求。

但是这里有一个问题就是假如缓存的数据失效了或者不是最新的了的话该怎么办。这其实是一个消息中间件的典型应用场景。在A服务器与其他调用者之间需要建立一个消息中间件的机制。

在这个mq上需要根据缓存的对象内容建立一个绑定关系。然后在缓存当中需要配置对应的事件监听者,也就是一个Listener。当A当中的数据,即数据库中的数据更新的时候。A需要发出一个缓存更新的message出去,然后调用者的缓存当中的listener收到这个message,发现消息过期,然后就从新从A中取一次数据,并更新缓存。

除此之外,在mq不工作的时候,由于无法确保缓存的正确性,也应该清除掉缓存,这也是在缓存当中配置一个mq断开的事件监听来实现的。

猜你喜欢

转载自blog.csdn.net/topdeveloperr/article/details/81066880