代码之家  ›  专栏  ›  技术社区  ›  Poorna Subhash

如何在AWS自动发现中使用简单的spring memcached

  •  2
  • Poorna Subhash  · 技术社区  · 10 年前

    如何使用带有AWS Elasti Cache自动发现功能的简单spring memcached库(SSM)?我们正在使用spymmcached作为客户端。

    1 回复  |  直到 9 年前
        1
  •  0
  •   ragnor    10 年前

    所以,目前您正在使用spymmcached,并希望使用简单的spring memcached(SSM)添加缓存层,对吗?如果是,请提供spymemcached的当前配置。与SSM使用相同的配置应该很容易。

    更新

    我在SSM中添加了新的专用memcached提供程序,它使用AWS ElastiCache群集客户端。可在 master branch 并且尚未释放。如果您从主机构建SSM或使用此中可用的快照 repository 然后您可以使用自动发现功能。

    删除对的依赖项 spymmcached提供程序 间谍活动的 而是添加一个新的依赖项:

    <dependency>
      <groupId>com.google.code.simple-spring-memcached</groupId>
      <artifactId>aws-elasticache-provider</artifactId>
      <version>3.4.1-SNAPSHOT</version>
    </dependency>
    

    使用以下配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:context="http://www.springframework.org/schema/context" xmlns:cache="http://www.springframework.org/schema/cache"
            xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.1.xsd
               http://www.springframework.org/schema/cache 
               http://www.springframework.org/schema/cache/spring-cache-3.1.xsd">
    
      <cache:annotation-driven />
    
      <bean name="cacheManager" class="com.google.code.ssm.spring.SSMCacheManager">
        <property name="caches">
          <set>
            <bean class="com.google.code.ssm.spring.SSMCache">
              <constructor-arg name="cache" index="0" ref="defaultCache" />
              <!-- 5 minutes -->
              <constructor-arg name="expiration" index="1" value="300" />
              <!-- @CacheEvict(..., "allEntries" = true) won't work because allowClear is false, 
               so we won't flush accidentally all entries from memcached instance -->
              <constructor-arg name="allowClear" index="2" value="false" />
            </bean>
          </set>
        </property>
      </bean>
    
      <bean name="defaultCache" class="com.google.code.ssm.CacheFactory">
        <property name="cacheName" value="defaultCache" />
        <property name="cacheClientFactory">
          <bean name="cacheClientFactory" class="com.google.code.ssm.providers.elasticache.MemcacheClientFactoryImpl" />
        </property>
        <property name="addressProvider">
          <bean class="com.google.code.ssm.config.DefaultAddressProvider">
          <!-- set only single address to configuration endpoint -->    
            <property name="address" value="mycluster.fnjyzo.cfg.use1.cache.amazonaws.com:11211" />
          </bean>
        </property>
        <property name="configuration">
          <bean class="com.google.code.ssm.providers.elasticache.ElastiCacheConfiguration">
            <!-- set client mode to dynamic to enable Auto Discovery feature -->
            <property name="clientMode" value="#{T(net.spy.memcached.ClientMode).Dynamic}" />
          </bean>
        </property>
      </bean>
    </beans>
    

    如果对你有用,请告诉我。

    更新2

    新的Simple Spring Memcached版本 3.5.0 在github和中央maven存储库中提供了AWS自动发现功能。