mvc - javaweb项目,如何封装redis缓存?
ringa_lee
ringa_lee 2017-04-17 14:54:15
[Java讨论组]

需要达到的效果是:

Service调用DAO,如果缓存中没有再去查数据库,最后把查询结构添加到缓存

我的想法:

  1. Service处理业务逻辑,不应该知道数据从何而来,也就不能直接操作缓存

  2. 操作缓存的对象应该也是一个DAO层对象,但是操作数据库的对象也是DAO层的对象,把操作数据库的逻辑和操作缓存的逻辑放到一次看上去并不大好,而且如果用mybatis作为orm,dao层基本插不进缓存的代码。

那么问题来了:

这个缓存应该用什么姿势封装起来?

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
高洛峰

Spring提供了一套关于缓存的标准,可以支持很多种类型的缓存

这里有一篇文章:基于Spring的Web缓存,里面讲了几种不同层次的缓存,应该可以解决你的问题

ringa_lee

service层为什么不应该知道数据从哪来?我们项目中用到的redis的缓存是这样实现的, 在Interceptor中拦截关键的访问信息然后缓存,在service操作缓存也只是取缓存中的内容。当然有些情况是更新数据库内容之后需要涉及更新缓存,自然也是需要在service中重新设置缓存的。操作缓存肯定是不能在dao层去做的。

天蓬老师

楼主不知道mybatis本身是支持缓存的吗?

MyBatis定义了一个缓存Cache接口, 你可以自己实现它去连接Redis缓存。

参考这里: http://mybatis.github.io/redis-cache

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号