mysql - 如何用redis/memcache做缓存层
迷茫
迷茫 2017-04-17 11:51:35
0
2
279

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

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(2)
Peter_Zhu

方法一:直接用Mysql
這種事情首先Mysql裡面就有緩存,實現了類似的功能,如果需要緩存的東西很多,你可以把緩存的內存設定大一點。
這樣的好處就是你不用自己控制快取的失效,確保資料一致性。

方法二:啟用用DAO框架的快取
例如Mybatis、Hibernate都是可以直接開啟二級緩存,通常是用ehcache作為實現,你只要配置就行,無需額外操作。

方法三:自己實作
用AOP去在Dao層做一個切面,把調用的「類名+方法名+參數」作為key,查詢結果作為value,每次調用去看一下是否已經緩存了,如果沒有再去調用Dao的實現類。

註:如果真的要自己去實現,不建議做一個這麼通用的方案,感覺重複造輪子。對效能要求極高的場景,可以根據實際需要做一些必要的快取即可。

刘奇

建議你學習下代理模式

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!