mysql - 如何用redis/memcache做缓存层

 兔子东大门一手批发 发布于 2022-11-06 09:05

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

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

2 个回答
  • 建议你学习下代理模式

    2022-11-12 01:56 回答
  • 方法一:直接用Mysql
    这种事情首先Mysql里面就有缓存,实现了类似的功能,如果需要缓存的东西很多,你可以把缓存的内存设置大一点。
    这样的好处就是你不用自己去控制缓存的失效,确保数据一致性。

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

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

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

    2022-11-12 01:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有