最近项目中要用到缓存,无意中了解到memcached使用比较广泛,但考虑到以后其它情况(有可能换其它缓存),想了想
应该用一个更灵活的方法来管理缓存,经过资料查找和自己耐心调试,最终还是出来了(暂未过多考虑性能)
有个疑惑:这个客户端的连接池,设置连接的空闲时间短点好(n秒)还是设置时间长点好呢?(n小时)
时间长了,如果并发很大是不是连接很快就满了?
后来我修改了,一个客户端一个配置文件,这样用哪个客户端就只加载对应的配置文件
详请见附件(spring_memcached.zip )。 接口里的方法定义不是太合理,只是提供给有需要的朋友一个思路。
暂写了两个客户端的配置一个是官方客户端,一个是xmencached (也是网上找来或者看官方实现)。
spring配置(代码详见附件(一个接口,两个实现,两个配置文件),具体客户端支持包请自行下载):
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd "> <!--memcached 客户端***start--> <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool" factory-method="getInstance" init-method="initialize" destroy-method="shutDown"> <constructor-arg> <value>neeaMemcachedPool</value> </constructor-arg> <property name="servers"> <list> <value>192.168.54.207:12345</value> <!--多服务器 <value> 192.168.54.207:12346 </value> --> </list> </property> <!--多服务器负载均衡--> <!--<property name="weights"> <value>5,5</value> </property>--> <property name="initConn"> <value>20</value> </property> <property name="minConn"> <value>10</value> </property> <property name="maxConn"> <value>500</value> </property> <property name="maintSleep"> <value>30</value> </property> <property name="nagle"> <value>false</value> </property> <property name="maxIdle"> <value>6000</value> </property> <property name="socketTO"> <value>3000</value> </property> </bean> <!--memcached client--> <bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient"> <constructor-arg> <value>neeaMemcachedPool</value> </constructor-arg> <property name="compressEnable"> <value>true</value> </property> <property name="compressThreshold"> <value>4096</value> </property> </bean> <!--memcached 客户端***end--> <!--如果换客户端或者换缓存了,在web.mxl里切换加载对应的配置文件即可--> <bean id="cache" class="com.kanmenzhu.impl.CacheClientImpl"> <property name="cacheProvider" ref="memcachedClient"/> </bean> </beans>