浏览 6543 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-29
最后修改:2009-12-10
最近项目中要用到缓存,无意中了解到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>
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-29
最后修改:2009-12-10
附件文件名spring居然附件写成了sprint....不改了
|
|
返回顶楼 | |
发表时间:2009-11-29
还是放弃com.danga.MemCached,在高并发的情况下,完全不可用。换xmemcached或者spymemcached吧
|
|
返回顶楼 | |
发表时间:2009-11-30
最后修改:2009-11-30
yishh 写道 还是放弃com.danga.MemCached,在高并发的情况下,完全不可用。换xmemcached或者spymemcached吧
已经换成xmemcached了,看来之前设计还是有点小道理的。换这个客户端倒是比较轻松了 同时将缓存相关配置成单独配置文件,这样用哪个就在web.xml里配置加载哪个 ![]() |
|
返回顶楼 | |
发表时间:2009-12-01
yishh 写道 还是放弃com.danga.MemCached,在高并发的情况下,完全不可用。换xmemcached或者spymemcached吧
原来是这样 谢谢了 我去查查 ~~ |
|
返回顶楼 | |
发表时间:2009-12-01
最后修改:2009-12-01
whaosoft 写道 yishh 写道 还是放弃com.danga.MemCached,在高并发的情况下,完全不可用。换xmemcached或者spymemcached吧
原来是这样 谢谢了 我去查查 ~~ 我用一台普通PC CentOS,1.28服务器,官方客户端单线程1秒只能写1000个左右,读稍慢一点点。 |
|
返回顶楼 | |
发表时间:2009-12-01
yishh 写道 还是放弃com.danga.MemCached,在高并发的情况下,完全不可用。换xmemcached或者spymemcached吧
http://code.google.com/p/xmemcached/wiki/Spring_Integration xmemcached已经提供了spring集成方案~ |
|
返回顶楼 | |