引入jar包
<!--memcache客户端--> <dependency> <groupId>com.googlecode.xmemcached</groupId> <artifactId>xmemcached</artifactId> <version>2.0.0</version> </dependency>
源码奉上:
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;
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* @Author zbf
* @DATA 2019/11/21 20:19
* @ClassIntroduction
*/
public class MemacheUtils {
// 服务器地址和端口,形如 "IP:Port" 多个用空格隔开
private String server = "127.0.0.1:11211";
private MemcachedClient memcachedClient;
@PostConstruct
public void init() {
try {
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(server));
memcachedClient = builder.build();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 设置 memcache 缓存,默认10s分钟过期.
*
* @param key 键
* @param value 缓存值
* @return bool
*/
public <D> boolean set(String key, D value) {
return set(key, value, 10);
}
/**
* 设置 memcache 缓存.
*
* @param key 键
* @param value 缓存值
* @param seconds 过期时间,单位秒
* @return bool
*/
public <D> boolean set(String key, D value, int seconds) {
try {
return memcachedClient.set(key, seconds, value);
} catch (MemcachedException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return false;
}
/**
* 获得 memcache 缓存.
*
* @param key 键
* @return 值
*/
public <D> D get(String key) {
try {
return memcachedClient.get(key);
} catch (MemcachedException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
public boolean delete(String key) {
try {
return memcachedClient.delete(key);
} catch (MemcachedException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return false;
}
}