nitouge
V2EX  ›  Redis

Redis 缓存数据

  •  
  •   nitouge · Jan 22, 2025 · 4262 views
    This topic created in 478 days ago, the information mentioned may be changed or developed.

    目前使用 Redis 缓存数据,对于 A 和 B 单独缓存,现在有其他服务需要 A 和 B 两个对象的某些属性 问题:

    1. 存数据在服务消费方还是服务提供方;
    2. 存组合对象,A,B 对象更新,组合对象都需要去更新或者删除再加载;
    3. 对于分页查询或者 list 查询后,缓存每一条数据,如果通过注解,是否需要详情接口,再去缓存,而不是直接缓存集合数据
    4 replies    2025-01-23 11:55:12 +08:00
    dxddd
        1
    dxddd  
       Jan 22, 2025
    1 看场景,即时性不高的可能消费方和服务方都会缓存,能减少接口请求。
    2 组合对象,就类似于宽表,能减少一次 redis 查询,确定性能要求真的这么极限么,那不如直接用内存。
    3 分页查询多存在于后台管理,对性能要求不高。第二种场景也大多是查询“我的”数据,大多命中索引,一般不会放缓存中。第三种场景类似于商品列表,这种一般会被预热到缓存里,或者直接就是静态化的。
    spritecn
        2
    spritecn  
       Jan 22, 2025
    这种活,不考虑上 ES 么,天生干这个的
    nitouge
        3
    nitouge  
    OP
       Jan 23, 2025
    @dxddd 是有一个计算服务,调用频繁,我们考虑了两种方法,单独缓存 A 和 B,组合对象不缓存,组合对象 C 去调用缓存 A 和 B 的,也是利用了缓存。还有一个问题:使用了 Spring Cache 对于新增和更新也是两种方案,@CacheEvict 删除缓存,下次查询就再次缓存,@CachePut 去更新,旧的接口返回 Boolean 或者 void ,可能需要操作完还需要再去查询,或者通过发布事件去查询;对于新的接口我们是新增和更新返回缓存对象
    nitouge
        4
    nitouge  
    OP
       Jan 23, 2025
    @spritecn 我们目前不考虑 es ,这个也不是我说的算
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2962 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:58 · PVG 13:58 · LAX 22:58 · JFK 01:58
    ♥ Do have faith in what you're doing.