****************************************** Xmemcached Change log ******************************************* 2009-10-10 -------xmemcached 1.2.0-stable Released-------- 1.Add heartbeat for connection to keepalive,xmemcached enable this feature by default.You can disable it by: memcachedClient.setEnableHeartBeat(false); 2.Add new methods for incr/decr,you can pass initial value as parameter now: public long incr(final String key, final long num, final long initValue) throws TimeoutException, InterruptedException, MemcachedException; public abstract long decr(final String key, final long num, long initValue) throws TimeoutException, InterruptedException, MemcachedException; 3.Bug fixed.This release has fixed some bug that is very important,included issue 57,issue 59 etc. 4.Recommend upgrade. ******************************************* 2009-09-17 --------xmemcached 1.2.0-RC2-Released---------- 1.Add KestrelCommandFactory for using xmemcached to talk with kestrel(a MQ written in scala). Kestrel(http://github.com/robey/kestrel) use memcached text protocol,but not all compatible. 2.Implement a election hash session locator. Election hash just like consistent hash,more infomation see (http://devcentral.f5.com/Default.aspx? tabid=63&articleType=ArticleView&ArticleID=135&PageID=151) 3.Extend Transcoder interface,add some new methods to configure it. public void setPackZeros(boolean packZeros); public void setPrimitiveAsString(boolean primitiveAsString); "setPrimitiveAsString" This method is used to set whether to store primitive type as string in memcached. "setPackZeros" This method is used to set whether to remove all zero bytes from the MSB of the packed num 4.Bug fixed since 1.2.0-RC1. 2009-09-08 --------xmemcached 1.2.0-RC1-Released----------- 1.Supports all binary protcol of memcached.Add BinaryCommandFactory class to support it.if you want to use that,just add one line code: memcachedClientbuilder.setCommandFactory(new BinaryCommandFactory()); 2.Supports hibernate-memcached,about the detail please see wiki page http://code.google.com/p/xmemcached/wiki/Hibernate_memcached_integration 3.Compatible with jdk5. 4.Move from common-logging to slf4j. 5.Implement connection pool.Allow to create more connection to one memcached server.Default pool size is one,you can change it like this: memcachedClient.setConnectionPoolSize(2); Then,xmemcached will create two connections to one memcached server.Your application must ensure updating data is synchronized between connections. 6.Upgrade yanf4j to 1.0-SNAPSHOT.This version is introduce SocketOption class to configure tcp options easily,and refactoring for implement aio(jdk7 nio2.0). 7.Remove ant build script,simplify maven build. 8.BUG fixed since 1.1.3 and 1.2.0-beta -------------------------------------------- 2009-07-13 --------xmemcached 1.1.3-Released----------- 1.Upgrade yanf4j to 0.7.0, yanf4j-0.7.0 is a refactoring version and turned for best performance. 2.Disable tcp nagle algorithm by default,change default tcp receive buffer size from 16k to 8k. 3.Add a new interface MemcachedClientStateListener for listenning xmemcached client's events to callback.MemcachedClient add two methods: public void addStateListener(MemcachedClientStateListener listener); public void removeStateListener(MemcachedClientStateListener listener); public Collection getStateListeners(); 4.Make a new benchmark,please see http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html 5.Refactoring and bug fixed.Issue 39 etc. -------------------------------------------- 2009-06-22 --------xmemcached 1.1.2-Released----------- 1.Supports integrating to spring framework.for example: localhost:12000 localhost:12001 Then you can use memcachedClient bean in other beans.More information is on wiki. 2.Support verbosity protocol.This protocol is used to set logging level for memcached logging output. Add two methods to MemcachedClient,include: setLoggingLevelVerbosity(InetSocketAddress address, int level) setLoggingLevelVerbosityWithNoReply(InetSocketAddress address,int level) 3.Support weighted server.Now you can set the memcached servers in different weight. The only change is the way to build XMemcachedClient: MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:12000 localhost:12001"),new int[]{1,3}); builder.setSessionLocator(new KetamaMemcachedSessionLocator()); MemcachedClient memcachedClient=builder.build(); As you see,now you can pass a weight array to XMemcachedClientBuilder constructor.The array's length must be great or equal to address list size. 4.Support noreply for add,set,replace,cas,append,prepend,delete,incr/decr,flush_all,verbosity protocols. Add some new methods in MemcachedClient,include: setWithNoReply,addWithNoReply,replaceWithNoReply,appendWithNoReply,prependWithNoReply,casWithNoReply deleteWithNoReply,incr(decr)WithNoReply,flushAllWithNoReply,setLoggingLevelVerbosityWithNoReply 5.Bug fixed. Issue 35,Issue 36,Issue 37,Issue 38 etc. 6.Improve session monitor.When session is closed by exception or network error, monitor will reconnect to the session until success. The older version set the interval between reconnecting is 10 seconds,now set it to 0 seconds. 7.Improve JMX supports.Add a new method to XMemcachedClientMBean: /** * Set a memcached server's weight * * @param server * @param weight */ public void setServerWeight(String server, int weight); Change the getServersDescription method's result,add weight to description. --------------------End-------------------------- ****************************************************************** 2009-06-07 --------xmemcached 1.1.1-Released----------- 1.Migrate yanf4j to 0.61 2.Add many unit tests.Refactoring for a good Structure,It is ready to introduce the memcached binary protocol support. 3.Deprecated some classes and interfaces.Include: net.rubyeye.xmemcached.MemcachedProtocolHandler net.rubyeye.xmemcached.buffer.ArrayIoBuffer 4.Deprecated some methods.Includes: Deprecated Instead net.rubyeye.xmemcached.utils.AddrUtil.getAddress(String server) =====> getOneAddress(server) net.rubyeye.xmemcached.MemcachedClient.version() =====> getVersions() net.rubyeye.xmemcached.MemcachedClientMemcachedClient.stats(String host, long timeout) net.rubyeye.xmemcached.MemcachedClientMemcachedClient.stats(String host) 5.Add some new methods.Includes: net.rubyeye.xmemcached.MemcachedClientBuilder.getCommandFactory => CommandFactory getter/setter net.rubyeye.xmemcached.MemcachedClientBuilder.setCommandFactory net.rubyeye.xmemcached.MemcachedClientBuilder.setTranscoder => Transcoder getter/setter net.rubyeye.xmemcached.MemcachedClientBuilder.getTranscoder net.rubyeye.xmemcached.MemcachedClient.getVersions() => get all connected memcached servers's versions net.rubyeye.xmemcached.MemcachedClient.getStats() => get all connected memcached servers's stats. net.rubyeye.xmemcached.MemcachedClient.getStatsByItem(String item) => get all connected memcached servers's special item stats. net.rubyeye.xmemcached.MemcachedClient.setOpTime() => set the default operation timeout net.rubyeye.xmemcached.MemcachedClient.getOpTime() => get the default operation timeout net.rubyeye.xmemcached.MemcachedClient.getAvaliableServers() => Return avaliable servers net.rubyeye.xmemcached.utils.AddrUtil.getOneAddress => get a InetSocketAddress from string 6.Add some new classes.Includes net.rubyeye.xmemcached.codec.MemcachedCodecFactory => Implements yanf4j CodecFactory MemcachedDecoder MemcachedEncoder => decode/encode commands net.rubyeye.xmemcached.command.text.* net.rubyeye.xmemcached.command.* => Commmands implemented memcached text protocol 7.Change CommandFactory from class to interface,TextCommandFactory implement it for creating text protocol based commands. -------------------End--------------------- 2009-05-22 --------xmemcached 1.1.0-Released---------- 1.Improve multi-get operation's performance,It's as fast as spymemcached.It will continue on. 2.Refactoring: Move classes such as MemcachedTCPSession,MemcachedHandler,MemcachedConnector etc. from package net.rubyeye.xmemcached to net.rubyeye.xmemcached.impl Introduce interfaces: MemcachedClient,MemcachedClientBuilder 3.More Unit tests 4.Move 1.10 from svn trunk to branches/xmemcached-1.10 -------------------End--------------------- *******************************************