Skip to content

Caixiaopig/xmemcached

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

=======================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([email protected])

=============================================================
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<String> keys = new ArrayList<String>();
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">
		<property name="servers">
			<value>localhost:12000 localhost:12001</value>
		</property>
 </bean>

#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.

About

High performance, easy to use multithreaded memcached client in java.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published