Simple-Spring-Memcached


阅读本文的前提是,你已经安装或者使用了MemCached,或具有相关的基本知识。

今天要介绍的是Simple-Spring-Memcached,它封装了对MemCached的调用,使MemCached的客户端开发变得超乎寻常的简单,只要一行代码就行:

@ReadThroughAssignCache(assignedKey = "VETS", expiration = 300, namespace = "NELZ")

是不是很神奇?这行代码指定了MemCached的key,过期时间和命名空间。假设你的MemCached服务器IP是:196.168.10.101,端口是:12000,那么在数据调用的配置文件中只要加上下面配置代码就可以了:

<import resource="classpath:simplesm-context.xml" />

 

  <bean id="memcachedConnectionBean" class="net.nelz.simplesm.config.MemcachedConnectionBean">

    <property name="consistentHashing" value="true" />

    <property name="nodeList" value="196.168.10.101:12000" />

  </bean>

从simplesm-context.xml的内容中,可以看出它所封装的类和方法:
<bean id="memcachedClientFactory" class="net.nelz.simplesm.config.MemcachedClientFactory" >

                   <property name="bean" ref="memcachedConnectionBean" />

         </bean>

 

         <bean id="memcachedClient" factory-bean="memcachedClientFactory" factory-method="createMemcachedClient" />

 

         <bean id="methodStore" class="net.nelz.simplesm.aop.CacheKeyMethodStoreImpl" />

 

  <bean id="net.nelz.simplesm.DefaultKeyProvider" class="net.nelz.simplesm.impl.DefaultKeyProvider">

    <property name="methodStore" ref="methodStore" />

  </bean>

 

  <bean id="readThroughSingleCache" class="net.nelz.simplesm.aop.ReadThroughSingleCacheAdvice">

                   <property name="cache" ref="memcachedClient" />

                   <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

  </bean>

         <bean id="readThroughMultiCache" class="net.nelz.simplesm.aop.ReadThroughMultiCacheAdvice">

                   <property name="cache" ref="memcachedClient" />

                   <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

         </bean>

  <bean id="readThroughAssignCache" class="net.nelz.simplesm.aop.ReadThroughAssignCacheAdvice">

    <property name="cache" ref="memcachedClient" />

    <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

  </bean>

         <bean id="updateSingleCache" class="net.nelz.simplesm.aop.UpdateSingleCacheAdvice">

                   <property name="cache" ref="memcachedClient" />

                   <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

         </bean>

         <bean id="updateMultiCache" class="net.nelz.simplesm.aop.UpdateMultiCacheAdvice">

                   <property name="cache" ref="memcachedClient" />

                  <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

         </bean>

  <bean id="updateAssignCache" class="net.nelz.simplesm.aop.UpdateAssignCacheAdvice">

    <property name="cache" ref="memcachedClient" />

    <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

  </bean>

  <bean id="invalidateSingleCache" class="net.nelz.simplesm.aop.InvalidateSingleCacheAdvice">

    <property name="cache" ref="memcachedClient" />

    <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

  </bean>

  <bean id="invalidateMultiCache" class="net.nelz.simplesm.aop.InvalidateMultiCacheAdvice">

    <property name="cache" ref="memcachedClient" />

    <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

  </bean>

  <bean id="invalidateAssignCache" class="net.nelz.simplesm.aop.InvalidateAssignCacheAdvice">

    <property name="cache" ref="memcachedClient" />

    <property name="methodStore" ref="methodStore" />

    <property name="defaultKeyProvider" ref="net.nelz.simplesm.DefaultKeyProvider" />

  </bean>

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

import net.nelz.simplesm.annotations.ReadThroughAssignCache;

 import net.nelz.simplesm.annotations.ReadThroughSingleCache;

@ReadThroughAssignCache(assignedKey = "VETS", expiration = 300, namespace = "NELZ")

    public Collection<Vet> getVets() {

        System.out.println("\n ! ! !Gonna wait a bit: " + new Date() + "\n");        

        try {

            Thread.sleep(4000);

        } catch (Exception ex) {}

        return sessionFactory.getCurrentSession().createQuery("from Vet vet order by vet.lastName, vet.firstName").list();

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值