由于上一篇有介紹了Memcached緩存,并集群部署,這邊我們就不介紹,我們直接介紹Memcached與Spring AOP構(gòu)建分布式數(shù)據(jù)庫(kù)前端緩存框架
一.Java 實(shí)現(xiàn)Memcached客戶端,實(shí)現(xiàn)分布式
(1)需要的jar
1)commons-pool-1.5.6.jar
2)java_memcached-release_2.6.3.jar
3)slf4j-api-1.6.1.jar
4)slf4j-simple-1.6.1.jar
(2)Java 實(shí)現(xiàn)Memcached客戶端代碼如下:
(1)我們先溫習(xí)一下Spring AOP
AOP(Aspect Orient Programming)面向切面編程,可以運(yùn)用在事務(wù)管理、安全檢查、緩存、對(duì)象池管理等。面向切面編程中有一個(gè)主要的是Advice,這個(gè)Advice定義好的切入點(diǎn)處,連接點(diǎn)之前先執(zhí)行增強(qiáng)中的代碼或者連接點(diǎn)執(zhí)行后,再執(zhí)行增強(qiáng)中的代碼等。
(2)我們用Maven管理SpringMVC的jar和Memcached的jar
我們這里就介紹Memcached的jar,在POM.XML中添加Memcached對(duì)應(yīng)的jar包
(3)用Spring來(lái)管理Memcached連接信息的配置和實(shí)現(xiàn)
1)global.properties 文件
2)Spring配置文件(applicationContext-memached.xml)
3)junit測(cè)試一下這樣配置是否正確,代碼如下:
能保存并能獲取數(shù)據(jù)說(shuō)明配置成功
(4)實(shí)現(xiàn)MVC業(yè)務(wù)邏輯
(5)Spring AOP與Memcached構(gòu)建數(shù)據(jù)庫(kù)前端緩存框架
1)實(shí)現(xiàn)AOP的邏輯代碼
2)Spring 配置文件配置AOP
配置了對(duì)哪個(gè)方法進(jìn)行攔截,這里我們對(duì)getData方法進(jìn)行攔截
(6)測(cè)試Spring AOP與Memcached構(gòu)建數(shù)據(jù)庫(kù)前端緩存框架
1)第一次執(zhí)行我們傳參數(shù)hello,Memcached里面肯定沒(méi)有,因?yàn)槭堑谝淮螆?zhí)行,所示從數(shù)據(jù)庫(kù)獲取對(duì)應(yīng)的值,并保存到Memcached服務(wù)端,如圖所示:
2)執(zhí)行第二次,參數(shù)是hello,這次沒(méi)有去操作數(shù)據(jù)庫(kù),直接從Memcached服務(wù)端獲取對(duì)應(yīng)的值
3)我們這邊對(duì)Memcached服務(wù)端進(jìn)行集群部署,所以我們查看一下,數(shù)據(jù)保存到其中的一臺(tái),如圖所示:
三.構(gòu)建Memcached與Spring AOP構(gòu)建數(shù)據(jù)庫(kù)前端緩存框架出現(xiàn)的錯(cuò)誤
Error:com.schooner.MemCached.SchoonerSockIOPool - attempting to get SockIO from uninitialized pool!
原因是我們?cè)O(shè)置MemCachedClient和SockIOPool的ProxName不一樣導(dǎo)致,所以兩個(gè)名稱要一樣,如圖所示:
四.總結(jié)
我們?cè)谏弦黄榻B了,Memcached集群部署,有兩臺(tái)memcached.server=192.168.74.129:12000 和memcached.server2=192.168.74.130:13000,我們通過(guò)Memcached客戶端實(shí)現(xiàn)了分布式緩存的,Memcached服務(wù)端之間是不能通訊的,所示我們通過(guò)Memcached客戶端實(shí)現(xiàn)分布式緩存的。
聯(lián)系客服