Redis 一般放在 controller 还是 service 呢?

2021-01-30 13:24:22 +08:00
 inktiger

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

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

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

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

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

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

© 2021 V2EX