V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vanillaxxx
V2EX  ›  Java

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

  •  
  •   vanillaxxx · 2019-04-06 15:12:26 +08:00 · 3143 次点击
    这是一个创建于 2063 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2019-04-06 20:06:20 +08:00
    lovedebug
        1
    lovedebug  
       2019-04-06 15:18:03 +08:00 via Android
    redis 订阅通知机制了解下。谁改了数据库负责通知所有订阅者刷新缓存
    zhch602
        2
    zhch602  
       2019-04-06 15:18:53 +08:00 via Android
    上消息队列
    serical
        3
    serical  
       2019-04-06 15:20:09 +08:00 via Android
    可以把时间设置短点,或者让.net 自己拼出 redis 的 key 来 修改了商品就删除缓存呗
    xuanbg
        4
    xuanbg  
       2019-04-06 18:05:35 +08:00
    大家都用同一个 Redis,Java 或者 C#的应用有关系吗?各自管好自己的数据更新就好了。
    jimrok
        5
    jimrok  
       2019-04-06 18:13:19 +08:00
    把修改商品的功能做成服务,用 RPC。
    yidinghe
        6
    yidinghe  
       2019-04-06 18:24:50 +08:00
    最简单的办法当然是 .net 那边同步更新缓存,或者直接删除缓存然后你去更新。而如果 .net 那边不接触 Redis 的话,那就改用消息队列,消息队列在将来还能解决更多异构技术栈之间通信的问题。你们先约定一个消息格式,然后各自开发。
    rockyou12
        7
    rockyou12  
       2019-04-06 18:38:07 +08:00
    你缓存都在 redis 上了,它修改后把 redis 上的对应的缓存删了就行了。缓存更新,一般是有人去查的时候才更新 redis 的,不用手动在修改数据库数据的时候去修改缓存。
    dengtongcai
        8
    dengtongcai  
       2019-04-06 18:57:18 +08:00 via iPhone
    改动后,要么刷新缓存,要么删除缓存,反正得触发一下。你也可以使用 canal 这种同步 mysql 改动到缓存
    limuyan44
        9
    limuyan44  
       2019-04-06 20:06:20 +08:00 via Android
    删缓存,他要做不了你就搞个服务给他调,最简单的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3178 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:34 · PVG 21:34 · LAX 05:34 · JFK 08:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.