开发者社区> 问答> 正文

请问怎么用redis/memcache做缓存层 ?

目前公司的一个项目,数据库用的是Mysql,正在考虑用redis/memcached做数据库的缓存层,目前的想法就是在读DB前,先读缓存层,如果有直接返回,如果没有再读DB,然后写入缓存层并返回。

   不过,要是直接在应用层加入缓存的代码,感觉修改量大,修改维护也麻烦,因此想把应用层和缓存层的代码分开。不知道这种想法正确否?想看看别人的代码是如何实现的,有没有相关的开源项目啊可以学习啊

展开
收起
爵霸 2016-03-09 11:51:47 2414 0
1 条回答
写回答
取消 提交回答
  • 方法一:直接用Mysql
    这种事情首先Mysql里面就有缓存,实现了类似的功能,如果需要缓存的东西很多,你可以把缓存的内存设置大一点。
    这样的好处就是你不用自己去控制缓存的失效,确保数据一致性。

    方法二:启用用DAO框架的缓存
    比如Mybatis、Hibernate都是可以直接开启二级缓存,一般是用ehcache作为实现,你只要配置一下就行,无需额外操作。

    方法三:自己实现
    用AOP去在Dao层做一个切面,把调用的“类名+方法名+参数”作为key,查询结果作为value,每次调用去看一下是否已经缓存了,如果没有再去调用Dao的实现类。

    注:如果真的要自己去实现,不建议做一个这么通用的方案,感觉重复造轮子。对性能要求极高的场景,可以根据实际需要做一些必要的缓存即可。

    2019-07-17 18:55:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载