Spring Boot集成Memcached

Memcached 介绍

Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

因为 Spring Boot 没有针对 Memcached 提供对应的组件包,因此需要我们自己来集成。官方推出的 Java 客户端Spymemcached是一个比较好的选择之一。

Spymemcached是一个采用 Java 开发的异步、单线程的 Memcached 客户端,使用 NIO 实现。SpymemcachedMemcached的一个流行的 Java client 库,性能表现出色,广泛应用于Java + Memcached项目中。

依赖配置

添加依赖

pom.xml 包中添加spymemcached的引用

<dependency>
  <groupId>net.spy</groupId>
  <artifactId>spymemcached</artifactId>
</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.* 为开通将对应的配置文件加载到属性中

启动初始化 MemcachedClient

利用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("test", 1000, "AppBlog.CN");
    System.out.println(memcachedClient.get("test").toString());
  }
}

使用中先测试插入一个key为test,1000为过期时间,单位为毫秒,最后的AppBlog.CN为key对应的值

执行测试用例 testSetGet ,控制台输出内容:AppBlog.CN,表明测试成功。

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/04/01/spring-boot-integrated-memcached/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Spring Boot集成Memcached
Memcached 介绍 Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,……
<<上一篇
下一篇>>
文章目录
关闭
目 录