设为首页 收藏本站
查看: 995|回复: 0

[经验分享] java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存

[复制链接]

尚未签到

发表于 2015-9-2 09:40:43 | 显示全部楼层 |阅读模式
使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存
今天要介绍的是Simple-Spring-Memcached,它封装了对MemCached的调用,使MemCached的客户端开发变得超乎寻常的简单,只要一行代码就行:
@ReadThroughAssignCache(assignedKey = "VETS", expiration = 300, namespace = "NELZ")
是不是很神奇?这行代码指定了MemCached的key,过期时间和命名空间。假设你的MemCached服务器IP是:196.168.10.101,端口是:12000,那么在数据调用的配置文件中只要加上下面配置代码就可以了:

1 <import resource="classpath:simplesm-context.xml" />
5   <bean id="memcachedConnectionBean" class="net.nelz.simplesm.config.MemcachedConnectionBean">
7     <property name="consistentHashing" value="true" />
9     <property name="nodeList" value="196.168.10.101:12000" />
5   </bean>

从simplesm-context.xml的内容中,可以看出它所封装的类和方法:

1   <bean id="memcachedClientFactory" class="net.nelz.simplesm.config.MemcachedClientFactory" >
3     property name="bean" ref="memcachedConnectionBean" />
5   </bean>
9   <bean id="memcachedClient" factory-bean="memcachedClientFactory" factory-method="createMemcachedClient" />
13    <bean id="methodStore" class="net.nelz.simplesm.aop.CacheKeyMethodStoreImpl" />
17   <bean id="net.nelz.simplesm.DefaultKeyProvider" class="net.nelz.simplesm.impl.DefaultKeyProvider">
19     <property name="methodStore" ref="methodStore" />
21   </bean>
25   <bean id="readThroughSingleCache" class="net.nelz.simplesm.aop.ReadThroughSingleCacheAdvice">
27     <property name="cache" ref="memcachedClient" />
29     <property name="methodStore" ref="methodStore" />
31     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
33   </bean>
35   <bean id="readThroughMultiCache" class="net.nelz.simplesm.aop.ReadThroughMultiCacheAdvice">
37     <property name="cache" ref="memcachedClient" />
39     <property name="methodStore" ref="methodStore" />
41     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
43   </bean>
45   <bean id="readThroughAssignCache" class="net.nelz.simplesm.aop.ReadThroughAssignCacheAdvice">
47     <property name="cache" ref="memcachedClient" />
49     <property name="methodStore" ref="methodStore" />
51     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
53   </bean>
54
55   <bean id="updateSingleCache" class="net.nelz.simplesm.aop.UpdateSingleCacheAdvice">
57     <property name="cache" ref="memcachedClient" />
59     <property name="methodStore" ref="methodStore" />
61     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
63   </bean>
64
65   <bean id="updateMultiCache" class="net.nelz.simplesm.aop.UpdateMultiCacheAdvice">
67     <property name="cache" ref="memcachedClient" />
69     <property name="methodStore" ref="methodStore" />
71     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
73   </bean>
75   <bean id="updateAssignCache" class="net.nelz.simplesm.aop.UpdateAssignCacheAdvice">
77     <property name="cache" ref="memcachedClient" />
79     <property name="methodStore" ref="methodStore" />
81     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
83   </bean>
85   <bean id="invalidateSingleCache" class="net.nelz.simplesm.aop.InvalidateSingleCacheAdvice">
87     <property name="cache" ref="memcachedClient" />
89     <property name="methodStore" ref="methodStore" />
91     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
93   </bean>
95   <bean id="invalidateMultiCache" class="net.nelz.simplesm.aop.InvalidateMultiCacheAdvice">
97     <property name="cache" ref="memcachedClient" />
99     <property name="methodStore" ref="methodStore" />
101     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
103   </bean>



105   <bean id="invalidateAssignCache" class="net.nelz.simplesm.aop.InvalidateAssignCacheAdvice">
107     <property name="cache" ref="memcachedClient" />
109     <property name="methodStore" ref="methodStore" />
111     <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />
113   </bean>

Simple-Spring-Memcached还提供了一个例子,在spring的petClinic例子中加入了几行代码,就实现了对MemCached的调用:

1 import net.nelz.simplesm.annotations.ReadThroughAssignCache;
2
3 import net.nelz.simplesm.annotations.ReadThroughSingleCache;
4
5 @ReadThroughAssignCache(assignedKey = "VETS", expiration = 300, namespace = "NELZ")
6
7     public Collection<Vet> getVets() {
8
9         System.out.println("\n ! ! !Gonna wait a bit: " + new Date() + "\n");        
10
11         try {
12
13             Thread.sleep(4000);
14
15         } catch (Exception ex) {}
16
17         return sessionFactory.getCurrentSession().createQuery("from Vet vet order by vet.lastName, vet.firstName").list();
18
19          }

为了加强测试的效果,在第一次读取数据时,故意停顿了一下(sleep)。
转载自:http://www.blogjava.net/hao446tian/archive/2012/04/10/373725.html

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108610-1-1.html 上篇帖子: [收藏]Memcached 集群架构方面的问题 下篇帖子: 为什么使用memcached
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表