PEPEXXX
3.93D
V2EX  ›  Java

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

  •  
  •   PEPEXXX ·
    PRO
    · Apr 6, 2019 · 3833 views
    This topic created in 2780 days ago, the information mentioned may be changed or developed.

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

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