简介:
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}
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);
}
}