[转载]超简单使用MemCached

[转载]超简单使用MemCached – 老陈的博客 – 博客园.

阅读本文的前提是,你已经安装或者使用了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" /> 2 3 4 5 <bean id="memcachedConnectionBean" class="net.nelz.simplesm.config.MemcachedConnectionBean"> 6 7 <property name="consistentHashing" value="true" /> 8 9 <property name="nodeList" value="196.168.10.101:12000" /> 10 11 </bean>

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

1 <bean id="memcachedClientFactory" class="net.nelz.simplesm.config.MemcachedClientFactory" > 2 3 <property name="bean" ref="memcachedConnectionBean" /> 4 5 </bean> 6 7 8 9 <bean id="memcachedClient" factory-bean="memcachedClientFactory" factory-method="createMemcachedClient" /> 10 11 12 13 <bean id="methodStore" class="net.nelz.simplesm.aop.CacheKeyMethodStoreImpl" /> 14 15 16 17 <bean id="net.nelz.simplesm.DefaultKeyProvider" class="net.nelz.simplesm.impl.DefaultKeyProvider"> 18 19 <property name="methodStore" ref="methodStore" /> 20 21 </bean> 22 23 24 25 <bean id="readThroughSingleCache" class="net.nelz.simplesm.aop.ReadThroughSingleCacheAdvice"> 26 27 <property name="cache" ref="memcachedClient" /> 28 29 <property name="methodStore" ref="methodStore" /> 30 31 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 32 33 </bean> 34 35 <bean id="readThroughMultiCache" class="net.nelz.simplesm.aop.ReadThroughMultiCacheAdvice"> 36 37 <property name="cache" ref="memcachedClient" /> 38 39 <property name="methodStore" ref="methodStore" /> 40 41 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 42 43 </bean> 44 45 <bean id="readThroughAssignCache" class="net.nelz.simplesm.aop.ReadThroughAssignCacheAdvice"> 46 47 <property name="cache" ref="memcachedClient" /> 48 49 <property name="methodStore" ref="methodStore" /> 50 51 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 52 53 </bean> 54 55 <bean id="updateSingleCache" class="net.nelz.simplesm.aop.UpdateSingleCacheAdvice"> 56 57 <property name="cache" ref="memcachedClient" /> 58 59 <property name="methodStore" ref="methodStore" /> 60 61 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 62 63 </bean> 64 65 <bean id="updateMultiCache" class="net.nelz.simplesm.aop.UpdateMultiCacheAdvice"> 66 67 <property name="cache" ref="memcachedClient" /> 68 69 <property name="methodStore" ref="methodStore" /> 70 71 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 72 73 </bean> 74 75 <bean id="updateAssignCache" class="net.nelz.simplesm.aop.UpdateAssignCacheAdvice"> 76 77 <property name="cache" ref="memcachedClient" /> 78 79 <property name="methodStore" ref="methodStore" /> 80 81 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 82 83 </bean> 84 85 <bean id="invalidateSingleCache" class="net.nelz.simplesm.aop.InvalidateSingleCacheAdvice"> 86 87 <property name="cache" ref="memcachedClient" /> 88 89 <property name="methodStore" ref="methodStore" /> 90 91 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 92 93 </bean> 94 95 <bean id="invalidateMultiCache" class="net.nelz.simplesm.aop.InvalidateMultiCacheAdvice"> 96 97 <property name="cache" ref="memcachedClient" /> 98 99 <property name="methodStore" ref="methodStore" /> 100 101 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 102 103 </bean> 104 105 <bean id="invalidateAssignCache" class="net.nelz.simplesm.aop.InvalidateAssignCacheAdvice"> 106 107 <property name="cache" ref="memcachedClient" /> 108 109 <property name="methodStore" ref="methodStore" /> 110 111 <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" /> 112 113 </bean> 114 115  

Simple-Spring-Memcached还提供了一个例子,在spring的petStore例子中加入了几行代码,就实现了对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 } 20 21  

为了加强测试的效果,在第一次读取数据时,故意停顿了一下(sleep)。

夜深了,大家也应该sleep了吧:)

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏