假设你的系统时分布式的,部署的节点假设为A、B

    - 分布式缓存介绍 - 图1

    如果此时A中的数据被用户修改了、那么当用户去B节点获取数据时肯定是无法获取的,针对该问题可以借助第三方缓存中间件
    完成,A和B都从第三方中间件缓存中获取即可

    - 分布式缓存介绍 - 图2

    上面的缓存中间件主流的一般为Redis、MemoryCache等,虽然能够解决了分布式缓存的问题,但需要用户增加维护缓存的成本
    上诉的架构虽然能够解决分布式缓存的问题、但是会导致缓存中间件频繁连接,为此我们基础框架内置的缓存使用了另一种方式解决

    - 分布式缓存介绍 - 图3

    [!TIP|label: 流程分析]

    • A节点、B节点同时订阅一个频道(假设为ChannelDemo)
    • A节点将数据放入到基础框架缓存中(假设为adminCache)
    • adminCache将缓存数据放置在该节点对应的实例中一份(方便A节点获取),并将消息M发布给ChannelDemo管道
    • 由于B节点订阅了ChannelDemo,所以B节点收到消息M,B节点自动拉取M消息到该节点对应的实例中一份(方便B节点获取)
    • 如果用户此时被路由到B节点上,那么是可以获取A节点上存放的数据的

    [!TIP|label: 结论]
    通过上面流程分析可以看出,当缓存数据修改不频繁时,可以提高缓存命中率