Memcached 介绍
Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用减轻数据负载,它通过在内存中缓存数据来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度, Memcached基于一个存储键值对的hashmap,起守护进程(daemon)是用C写的,但是客户端可以用任意语言来编写, 并通过memcached协议与收据进程通信
因为SpringBoot没有针对Memcached提供对应的组件包,因此需要我们自己来集成。官方推出的java客户端Spymemcached是一个比较好的选择之一
Spymemcached 介绍
Spymemcached是一个采用Java开发的异步、单线程的Memcached客户端,使用NIO实现,Spymemcached是一个Memcached的一个流行的JavaClient库,性能表现出色,广泛的英语与Java + Memcached项目中
依赖配置
–1 添加依赖
<dependency>
<groupId>net.spy</groupId>
<artifactId>spymemcached</artifactId>
<version>2.12.2</version>
</dependency>
–2 添加配置
memcache.ip=192.168.0.161
memcache.port=11211
分别配置memcache的Ip地址和端口
–3 设置配置对象
创建MemcacheSource
接收配置信息
@Component
@ConfigurationProperties(prefix = "memcache")
public class MemcacheSource {
private String ip;
private int port;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
@ConfigurationProperties(prefix = "memcache")
的意思会以 memcache.*
为开通将对应的配置文件加载到属性中。
启动初始化 MemcachedClient
@Component
public class MemcachedRunner implements CommandLineRunner {
protected Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource
private MemcacheSource memcacheSource;
private MemcachedClient client = null;
@Override
public void run(String... args) throws Exception {
try {
client = new MemcachedClient(new InetSocketAddress(memcacheSource.getIp(),memcacheSource.getPort()));
} catch (IOException e) {
logger.error("inint MemcachedClient failed ",e);
}
}
public MemcachedClient getClient() {
return client;
}
}
测试使用
@RunWith(SpringRunner.class)
@SpringBootTest
public class RepositoryTests {
@Resource
private MemcachedRunner memcachedRunner;
@Test
public void testSetGet() {
MemcachedClient memcachedClient = memcachedRunner.getClient();
memcachedClient.set("testkey",1000,"666666");
System.out.println("*********** "+memcachedClient.get("testkey").toString());
}
}
使用中先测试插入一个 key 为 testkey ,1000 为过期时间单位为 毫秒,最后的 “666666” 为 key 对应的值。
执行测试用例 testSetGet ,控制台输出内容:
*********** 666666
表明测试成功。