关于Redis缓存的一些问题

有一个A项目,一个B项目。

A项目里存储了项目信息与客户信息的数据,B项目中有一个请求会用到与A的项目信息与客户信息数据。

现在采用redis做。

在B中第一次调用A服务之后,把结果放入缓存,这样后继B项目再用到项目信息与客户信息数据不会再去进行服务调用而是去缓存中拿。

但是这样可能有一个缓存一致性的问题。

A项目中的数据如果有任意改动,那么B项目的缓存如果不及时删除就会有脏数据。

目前想到的几个方案:

1)跨库SQL,所有业务写在SQL里,B服务一次性把自己的数据和A库中的数据通过关联关系全部查出来,但是会涉及到跨库,服务调用性能不详

2)A项目中有任意一个项目信息被修改时,前端能否拿到这个项目的修改后信息,再次调用B服务,把A返回的数据放在B的缓存中?这样实现少量的同步缓存

有没有什么比较好的做法呢?

阅读 2k
2 个回答

你是否有a项目的权限,如果有的话你可以让a服务通知b服务把缓存删除,如果没有,你可以当更新时调用a的修改接口和b的删除缓存的接口

A如果有数据更新,那么就将缓存的数据设置失效,B在缓存中拿不到数据,就去重新调用服务生成最新的数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进