Redis 一般放在 controller 还是 service 呢?

2021 年 1 月 30 日
 inktiger

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

5358 次点击
所在节点    Java
10 条回复
Jacky23333
2021 年 1 月 30 日
虽然我看不懂你的中文,但是 Redis 应该下沉到 Manager 层吧
inktiger
2021 年 1 月 30 日
@Jacky23333 我现在其实纠结的问题是在 api 模块直连 redis 还是放在其他模块如 service 模块暴露 rpc 接口的方式
ChoateYao
2021 年 1 月 30 日
redis 是基础服务,任何模块都能用,取决于你的数据缓存范围。
如果只是当前接口需要缓存,那么放在 controller 。
如果是全局数据缓存:Token 之类的,那么可以放在 Services 。
以此类推
meteor957
2021 年 1 月 30 日
service
Sendya
2021 年 1 月 30 日
一般放 service 层
Rache1
2021 年 1 月 30 日
应该放到 repository 吧 ,没有 repository 就下沉到 service 咯
JDog
2021 年 1 月 30 日
放 reousrces 里(逃
hulala1021
2021 年 1 月 30 日
我这边一直放在 controller 层。
一般会定义一个自定义注解,如果部分接口需要缓存的化,在对应 controller 层方法上加个注解;
不过你这个使用场景和我有点不同
hauzerlee
2021 年 1 月 31 日
看你要缓存的数据,更贴近哪一层。如果更贴近原始数据,是为了降低查库的频率,就放到 service 里,如果缓存的数据更接近中间加工完接口往外吐的数据,那就放到 controller 里,拿出来组完数据就可以吐出去了。
gsh456
2021 年 2 月 6 日
这个是看个人习惯,我的习惯是 controller 不做任何业务处理, 所以这个一般我会放到 service

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

https://v2ex.ih06.com/t/749812

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

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

© 2021 V2EX