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);
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值