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

Redis 一般放在 controller 还是 service 呢?

  •  
  •   inktiger · 2021-01-30 13:24:22 +08:00 · 4156 次点击
    这是一个创建于 1175 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目是用 springboot+dubbo 集成的微服务,现在 api 模块调用数据是消费 service 模块的 dubbo 服务读取数据,现在想在 api 模块加常用数据缓存和分布式锁,还适合在 service 模块添加吗,通过 service 暴露 rpc 接口的方式 api 模块调用还合适吗?

    10 条回复    2021-02-06 16:06:06 +08:00
    Jacky23333
        1
    Jacky23333  
       2021-01-30 13:34:06 +08:00 via Android   ❤️ 2
    虽然我看不懂你的中文,但是 Redis 应该下沉到 Manager 层吧
    inktiger
        2
    inktiger  
    OP
       2021-01-30 13:38:35 +08:00
    @Jacky23333 我现在其实纠结的问题是在 api 模块直连 redis 还是放在其他模块如 service 模块暴露 rpc 接口的方式
    ChoateYao
        3
    ChoateYao  
       2021-01-30 13:52:21 +08:00   ❤️ 1
    redis 是基础服务,任何模块都能用,取决于你的数据缓存范围。
    如果只是当前接口需要缓存,那么放在 controller 。
    如果是全局数据缓存:Token 之类的,那么可以放在 Services 。
    以此类推
    meteor957
        4
    meteor957  
       2021-01-30 14:44:24 +08:00 via Android
    service
    Sendya
        5
    Sendya  
       2021-01-30 14:53:54 +08:00
    一般放 service 层
    Rache1
        6
    Rache1  
       2021-01-30 20:22:13 +08:00
    应该放到 repository 吧 ,没有 repository 就下沉到 service 咯
    JDog
        7
    JDog  
       2021-01-30 21:42:14 +08:00
    放 reousrces 里(逃
    hulala1021
        8
    hulala1021  
       2021-01-30 23:02:02 +08:00
    我这边一直放在 controller 层。
    一般会定义一个自定义注解,如果部分接口需要缓存的化,在对应 controller 层方法上加个注解;
    不过你这个使用场景和我有点不同
    hauzerlee
        9
    hauzerlee  
       2021-01-31 17:08:57 +08:00
    看你要缓存的数据,更贴近哪一层。如果更贴近原始数据,是为了降低查库的频率,就放到 service 里,如果缓存的数据更接近中间加工完接口往外吐的数据,那就放到 controller 里,拿出来组完数据就可以吐出去了。
    gsh456
        10
    gsh456  
       2021-02-06 16:06:06 +08:00
    这个是看个人习惯,我的习惯是 controller 不做任何业务处理, 所以这个一般我会放到 service
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1145 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:44 · PVG 07:44 · LAX 16:44 · JFK 19:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.