nfhu / xmemcached

Automatically exported from code.google.com/p/xmemcached
Apache License 2.0
0 stars 0 forks source link

=======================Introduction========================== xmemcached XMemcached is a high performance, easy to use blocking multithreaded memcached client in java. It's nio based and was carefully tuned to get top performance.

homepage: http://code.google.com/p/xmemcached/ downloads; http://code.google.com/p/xmemcached/downloads/list wiki : http://code.google.com/p/xmemcached/w/list author : dennis zhuang(killme2008@gmail.com)

============================================================= FAQ 1.How to build project by maven?

Type command "mvn -Dtest -DfailIfNoTests=false assembly:assembly" to build the project.Maven will download the dependencies automacly and build project.

2.How to run unit tests?

The test.properties file under the src/test/resources folder is used for setting memcached test server. Please set test.memcached.servers property,Then run the AllTests class with jvm option "-ea".

3.Is Xmemcached compatible with jdk5? Yes,since 1.2.0-RC1,Xmemcached is compatible with jdk5.

======================Example==================================

New a XMemcachedClient instance

XMemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("localhost:11211")); XMemcachedClient client=builder.build();

If you want to use binary protocol(use memcached 1.4.0 and xmemcached 1.2.0)

XMemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("localhost:11211")); builder.setCommandFactory(new BinaryCommandFactory()); XMemcachedClient client=builder.build();

If you want to use xmemcached talking with kestrel

XMemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("localhost:11211")); builder.setCommandFactory(new KestrelCommandFactory()); XMemcachedClient client=builder.build();

If you want to store primitive type as String

client.setPrimitiveAsString(true);

add or remove memcached server dynamically

client.addServer("localhost:12001 localhost:12002"); client.removeServer("localhost:12001 localhost:12002");

get operation

String name =client.get("test");

set add replace append prepend gets

client.add("hello", 0, "dennis"); client.replace("hello", 0, "dennis"); client.append("hello", 0, " good"); client.prepend("hello", 0, "hello "); GetsResponse response=client.gets("hello"); long cas=response.getCas(); Obejct value=response.getValue();

incr decr

client.set("a",0,"1"); client.incr("a",4); client.deccr("a",4);

cas

client.cas("a", 0, new CASOperation() { @Override public int getMaxTries() { return 1; //max try times } @Override public Object getNewValue(long currentCAS, Object currentValue) { System.out.println("current value " + currentValue); return 3; }

});

flush_all

client.flushAll();

stats

Map<InetSocketAddress,Map<String,String>> result=client.getStats();

get server versions

Map<InetSocketAddress,String> version=memcached.getVersions();

bulk get

List keys = new ArrayList(); keys.add("hello"); keys.add("test"); Map<String, Object> map = client.get(keys);

Enable jmx support

java -Dxmemcached.jmx.enable=true [YourApp]

Access MBean through service:jmx:rmi:///jndi/rmi://[host]:7077/xmemcachedServer

Integrate to spring framework

<bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">

localhost:12000 localhost:12001

Set server's weight

//set weight to 2 client.addServer("localhost",12000,2);

//or through XMemcachedClientBuilder,pass a weight array to XMemcachedClientBuilder constructor MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:12000 localhost:12001"),new int[]{1,3}); builder.setSessionLocator(new KetamaMemcachedSessionLocator()); MemcachedClient memcachedClient=builder.build();

More information see wiki pages please.