Spring Boot 系列(二):教你如何集成 Memcached

Spring Boot 系列(二):教你如何集成 Memcached

Memcached 简介

memcached是一套分布式的快取系统,与redis相似,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。

memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。

memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。

memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。

依赖配置

添加依赖

pomx 包中添加 spymemcached 的引用

<dependency>

<groupId>net.spy</groupId>

<artifactId>spymemcached</artifactId>

<version>2.12.2</version>

</dependency>

添加配置

memcache.ip=192.168.0.161

memcache.port=11211

分别配置 memcache 的 Ip 地址和 端口。

设置配置对象

创建 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.* 为开通将对应的配置文件加载到属性中。

Spring Boot 系列(二):教你如何集成 Memcached

启动初始化 MemcachedClient

我们使用上一节的内容Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源,利用 CommandLineRunner 在项目启动的时候配置好 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

Spring Boot 系列(二):教你如何集成 Memcached

相关推荐