请教一下大家,如何管理 springboot 中的缓存?

2019-04-06 15:12:26 +08:00
 vanillaxxx

接口采用 springboot+jpa+redis 的技术栈,使用 restfulapi 进行前后端交互。比如前端获取商品列表,我可以用 @Cachable 把结果缓存在 redis 里面,然而,修改商品信息是另一个同事(老板)做的,他采用的是.NET 相关的技术栈。那么问题来了,他在后台改了商品信息之后,缓存信息怎么更新。。。头疼

3054 次点击
所在节点    Java
9 条回复
lovedebug
2019-04-06 15:18:03 +08:00
redis 订阅通知机制了解下。谁改了数据库负责通知所有订阅者刷新缓存
zhch602
2019-04-06 15:18:53 +08:00
上消息队列
serical
2019-04-06 15:20:09 +08:00
可以把时间设置短点,或者让.net 自己拼出 redis 的 key 来 修改了商品就删除缓存呗
xuanbg
2019-04-06 18:05:35 +08:00
大家都用同一个 Redis,Java 或者 C#的应用有关系吗?各自管好自己的数据更新就好了。
jimrok
2019-04-06 18:13:19 +08:00
把修改商品的功能做成服务,用 RPC。
yidinghe
2019-04-06 18:24:50 +08:00
最简单的办法当然是 .net 那边同步更新缓存,或者直接删除缓存然后你去更新。而如果 .net 那边不接触 Redis 的话,那就改用消息队列,消息队列在将来还能解决更多异构技术栈之间通信的问题。你们先约定一个消息格式,然后各自开发。
rockyou12
2019-04-06 18:38:07 +08:00
你缓存都在 redis 上了,它修改后把 redis 上的对应的缓存删了就行了。缓存更新,一般是有人去查的时候才更新 redis 的,不用手动在修改数据库数据的时候去修改缓存。
dengtongcai
2019-04-06 18:57:18 +08:00
改动后,要么刷新缓存,要么删除缓存,反正得触发一下。你也可以使用 canal 这种同步 mysql 改动到缓存
limuyan44
2019-04-06 20:06:20 +08:00
删缓存,他要做不了你就搞个服务给他调,最简单的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/552506

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX