spring cache 本地缓存清除_谁说集群的本地缓存不能清除的?

背景

在项目开发中,用户端会遇到需要实时更新配置数据的需求,如果配置数据在单库中配置,当用户端访问量较大,单库压力也会很大,此时会引入本地缓存来环节数据库服务器的压力。在集群环境中,当运营在B端更新数据库配置数据,由于用户端缓存还未失效,因此用户即使不断刷新也不能及时更新出最新的数据,用户体验总会存在一点不如人意的缺陷。这里介绍一种使用redis发布订阅能力+本地缓存Caffeine实现实时更新本地缓存的方案。

整个过程分成两个阶段:

初始同步

本地缓存建议设置成不过期,那么可以达到脱库的效果

664256143eb0bc7e3c20424028f4fe7e.png

广播同步

3c2aad6bd2ccc7947b4fd01c9ae6229d.png

订阅端

在第一次加载数据到缓存的时候,进行订阅

发布端

在更改数据的接口里对最新的数据进行发布,如果该更数据的接口在管理项目中,注意要和用户端使用同一个redis实例,否则无法通知到对应集群redis客户端的

发布订阅原理

Redis的发布与订阅功能由PUBLISH、 SUBSCRIBE、 PSUBSCRIBE等命令组成。通过执SUBSCRIBE命令, 客户端可以订阅一个或多个频道, 从而成为这些频道的订阅者(subscriber) :每当有其他客户端向被订阅的频道发送消息(message) 时, 频道的所有订阅者都会收到这条消息。客户端还可以通过执行PSUBSCRIBE命令订阅一个或多个模式, 从而成为这些模式的订阅者:每当有其他客户端向某个频道发送消息时, 消息不仅会被发送给这个频道的所有订阅者, 它还会被发送给所有与这个频道相匹配的模式的订阅者

news.it频道订阅图例:

e79a6adfd46a14924bc7e0527c94d5f1.png

向new.it频道发送消息

aae2decda44b0baaadc70144cb7e5380.png

频道和模式的订阅关系

996fb23b2684a496d6afa1c1de28b79b.png

将消息发送给频道的订阅者和匹配模式的订阅者

a6a5220e094abf62e1f5737b7aa417be.png

c32fcd4efcb0be0d26b83ab25bb063cf.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值