超简单使用MemCached

烂漫一生 提交于 2020-01-08 18:27:55

阅读本文的前提是,你已经安装或者使用了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的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          }20 21  

 

 

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!