分布式缓存Memcached之Java使用篇

一、Memcache的客户端类型:

1.官方提供的基于传统阻塞io由Greg Whalin维护的客户端
https://github.com/gwhalin/Memcached-Java-Client/wiki

2.Dustin Sallings实现的基于java nio的Spymemcached

http://code.google.com/p/spymemcached/

3.XMemcached

http://code.google.com/p/xmemcached/,nio

4.各个客户端比较:

XMemcached在并发数增长的情况下有比较稳定的表现,Memcached-Java-Client小并发下性能最好,50并发以后出现问题,几乎不能支持高并发。Spymemchached有不稳定的因素,性能对比中比Xmemcached差一些;


因此选定了XMemcached,一般一个节点一个连接;对于多并发,还是可以使用多连接池来提高性能表现。

二、XMemcached的使用:

1. 常用:MemcachedClient.get(key); set(key, expirationTime, value); deleteWithNoReply(key); cas(key, expirationTime, value, version); GetsResponse<T> response = gets(key);

2.对象序列化,可以提升效率,使用Hessian进行序列化。

- <bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown">
- <property name="servers">
  <value>localhost:11211 localhost:12000 localhost:12001</value> 
  </property>
- <!--  server's weights 
  --> 
- <property name="weights">
- <list>
  <value>1</value> 
  <value>1</value> 
  <value>2</value> 
  </list>
  </property>
- <!--  AuthInfo map,only valid on 1.2.5 or later version 
  --> 
- <property name="authInfoMap">
  <map /> 
  </property>
- <!--  nio connection pool size 
  --> 
  <property name="connectionPoolSize" value="1" /> 
- <!-- when SAL should Use binary protocol,default is TextCommandFactory,otherwise must Text 
  --> 
- <!--   property name="commandFactory">
			<bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean>
		</property
  --> 
- <!--  Distributed strategy 
  --> 
- <property name="sessionLocator">
  <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator" /> 
  </property>
- <!--  Serializing transcoder 
  --> 
- <property name="transcoder">
  <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" /> 
  </property>
- <!--  ByteBuffer allocator 
  --> 
- <property name="bufferAllocator">
  <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator" /> 
  </property>
- <!--  Failure mode 
  --> 
  <property name="failureMode" value="false" /> 
  </bean>



References:

http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html

http://code.google.com/p/xmemcached/wiki/User_Guide_zh?ts=1277197687&updated=User_Guide_zh#%E4%B8%8ESpring%E6%A1%86%E6%9E%B6%E5%92%8CHibernate-memcached%E7%9A%84%E9%9B%86%E6%88%90

http://www.splinedancer.com/memcached-win32/

http://wangqiaowqo.iteye.com/blog/1155732

附录:

Memcached vs Redis:

1.数据类型:Memcache可存储任何数据类型:二进制存储即可;Redis只能存储String、List<String>、Set<String>、Hash<String,String>

2.安全:新的Memcache可以认证、高并发有CAS机制;Redis没有CAS;

3.存储:Memcache只有内存,Redis可以存到磁盘;

4.性能上很多说法,说谁快的都有,实际测试数据调研中Redis快的比较多;

5.其他,使用经验上,memcached群体较多。

6.数据大小:1M,内存碎片

另外,还有有名的TT内存缓存。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值