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