Java MemCached 简易教程

简介:

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。

准备:

1.下载Memcached服务端,并安装

2.下载spymemcached jar包


初始化:

初始化Client时,需要Memcached服务端的IP和端口(默认11211)

	MemcachedClient client = new MemcachedClient(new InetSocketAddress("127.0.0.1",11211));

存储:

有set,add,replace三种,都有三个参数:第一个参数为Key,第二个参数为保存时间,第三个参数是Value。

三者区别是,Add必须Key不存在,Replace必须Key不存在,Set则无论存不存在都保存。

1.Set

	client.set("101", 1000, new String("Hello"));

2.Add

	client.add("102", 1000, new String("Mark"));

3.Replace

	client.replace("101", 1000, new String("Sorry"));

获取:

有get,gets,getBulk三种,get返回的是具体的Value,gets返回的是一个CASValue对象,包括Value,和一个cas值(check and set)有点内存地址编号的味道,但是不是。getBulk是用于批量获取,返回的是一个Map.

1.Get

	client.get("101");

2.Gets

	client.gets("102");

3.getBulk

	client.getBulk(new String[]{"001","002","003"});


汇总代码:
import java.io.IOException;
import java.net.InetSocketAddress;
import net.spy.memcached.MemcachedClient;

public class TestMemCached {
	public static void main(String[] args) throws IOException, InterruptedException {
		MemcachedClient client = new MemcachedClient(
			new InetSocketAddress("127.0.0.1",11211));
			client.set("101", 3600, new String("Hello"));
			System.out.println(client.get("001"));
			
			client.add("102", 3600, new String("Mark"));
			System.out.println(client.gets("002"));
			
			client.replace("101", 3600, new String("Sorry"));
			System.out.println(client.getBulk(new String[]{"101","102"}));
	}
}


输出:

Hello
{CasValue 38/Mark}
{102=Mark, 101=Sorry}


另外还有一个asyncGet方法,可以规定必须在一定时间内获取,如果没有获取就取消,代码如下:
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

import net.spy.memcached.MemcachedClient;
public class TestMemCached {
	public static void main(String[] args) throws IOException, InterruptedException {
		MemcachedClient client = new MemcachedClient(
			new InetSocketAddress("127.0.0.1",11211));
			client.set("101", 3600, new String("Hello World"));
			
			String testVaule="";
			Future<Object> future= client.asyncGet("101");
			try{
				testVaule = (String) future.get(5,TimeUnit.SECONDS);
			}catch(Exception e)
			{
				future.cancel(true);
			}
			System.out.println(testVaule);
	}
}

你可能感兴趣的:(java,memcached,memcache,缓存系统,memcached教程)