javaweb项目,如何封装redis缓存?

_TNT_
  • 5.9k

需要达到的效果是:

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

我的想法:

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

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

那么问题来了:

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

回复
阅读 6.4k
3 个回答

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

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏