Xmemcached使用【三】

Xmemcached的Issues:http://code.google.com/p/xmemcached/issues/list?can=2&q=&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary&cells=tiles

 

上面的问题尅以解答很多疑问,值的关注哈!

 

1、使用的时候需要创建多个MemcachedClient对象吗?MemcachedClient是不是线程安全?

   MemcachedClient是线程安全的,由于xmemcached的网络层实现是基于nio长连接的,因此你并不需要重复创建多个MemcachedClient对象,通常来说将MemcachedClient设置为全局的唯一单例的服务使用,如果是使用spring配置,那更是简单,在spring配置文件里配置一个MemcachedClient,其他对象引用即可使用。

 

2、为什么会抛出java.util.TimeoutException?

   这是由于xmemcached的通讯层是基于非阻塞IO的,那么在请求发送给memcached之后,需要等待应答的到来,这个等待时间默认是1秒,如果超过1秒就抛出java.util.TimeoutExpcetion给用户。如果你频繁抛出此异常,可以尝试将全局的等待时间设置长一些,如我在压测中设置为5秒:

 

MemcachedClient  memcachedClient=……
memcachedClient.setOpTimeout(5000L);

 请注意,setOpTimeout设置的是全局的等待时间,如果你仅仅是希望将get或者set等操作的超时延长一点,那么可以通过这些方法的重载方法来使用:

 

<T> T get(java.lang.String key,long timeout)

boolean set(java.lang.String key, int exp,java.lang.Object value,
            long timeout)

……

 

 

 

 

 

 

你可能感兴趣的:(xmemcached)