服务端:
memcached官网不提供windows下的安装包,第三方安装包请网上自行寻找。
安装步骤:
1,cmd进入到memcached文件,执行以下命令:
memcached.exe -d install
2,运行-->services.msc,查找Memcached Server服务,并启动。或执行以下命令进行启动
net start "Memcached Server"
3,检测是否启动成功,执行以下命令(端口11211为默认端口,前没有冒号)
telnet 127.0.0.1 11211
客户端:
memcached客户端现存在有三种api:(版本存在更新情况,api后面结论只作基础参考)
①memcached client for java (较早推出,应用广泛,运行比较稳定。)
②spymemcached (支持异步,单线程)
③xmemcached (有效率高(特别在高并发下)和资源耗费相对较少的优点)
开发案例选择xmemcached :
开发需要jar包:
log4j-1.2.17.jar
slf4j-api-1.7.13.jar
slf4j-log4j12-1.7.9.jar
xmemcached-2.0.0.jar
CacheUtil:
package com.a;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import net.rubyeye.xmemcached.CASOperation;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;
public class CacheUtil {
private MemcachedClientBuilder builder = null;
private MemcachedClient client = null;
public CacheUtil(String address, int[] weight) {
builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(address), weight);
builder.setConnectionPoolSize(5);
try {
client = builder.build();
} catch (IOException e) {
e.printStackTrace();
}
}
public void set(String key, int exp, Object value) {
try {
if (!client.set(key, exp, value)) {
System.err.println("set error, key is " + key + " value is " + value);
}
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
}
public Object get(String key) {
try {
return client.get(key);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
return null;
}
public void delete(String key) {
try {
client.delete(key);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
}
public void update(String key, final Object value) {
try {
client.cas(key, 10, new CASOperation<Object>() {
public int getMaxTries() {
return 1;
}
public Object getNewValue(long currentCAS, Object currentValue) {
return value;
}
});
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
}
public void addServer(String server, int port, int weight) {
try {
client.addServer(server, port, weight);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Test:
public static void test() {
String address = "localhost:11211";
CacheUtil cache = new CacheUtils(address, new int[] {1});
cache.set("testName", 10, "testValue");
System.out.println(cache.get("testName"));
cache.update("testName", "testUpdateValue");
System.out.println(cache.get("testName"));
cache.delete("testName");
System.out.println(cache.get("testName"));
}