Springboot整合Memcached

一、首先我们使用Centos架设memcached服务器,我们使用Docker来架设Memcached服务

1. 拉取镜像

docker pull memcached:1.5.16

2. 启动容器

docker run --name memcached -p 11211:11211 -d memcached:1.5.16 memcached -m 128

好了,使用docker架设memcached服务器就完成了。

二、建立一个Springboot项目。

1. 增加pom依赖

        
            commons-pool
            commons-pool
            1.5.6
        

        
        
            com.danga
            java_memcached-release
            2.6.6
        

注意:这样做你会发现依赖库根本找不到。这是因为maven中心仓库根本就没有。

我们可以在网上搜索commons-pool-1.5.6.jar和java_memcached-release_2.6.6.jar,解压到指定文件夹,然后在该文件夹下执行cmd命令:

mvn install:install-file -DgroupId=commons-pool -DartifactId=commons-pool -Dversion=1.5.6 -Dpackaging=jar -Dfile=commons-pool-1.5.6.jar

mvn install:install-file -DgroupId=com.danga -DartifactId=java_memcached-release -Dversion=2.6.6 -Dpackaging=jar -Dfile=java_memcached-release_2.6.6.jar

这两个包就被安装到了你本地的maven仓库中,然后刷新一下项目pom依赖,就正常了。 

 

 

2. 修改port

3. 创建两个文件

MemCachedConfig.java用来配置memcached

package com.chris.memcached;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * create by: Chris Chan
 * create on: 2019/11/28 17:04
 * use for: MemCached配置
 */
@Configuration
public class MemCachedConfig {
    private static String[] MEM_SERVERS = {"192.168.0.108:11211"};//服务器
    private static Integer[] MEM_SERVERS_WEIGHT = {1};//权重

    @Bean
    public SockIOPool sockIOPool() {
        //建立通信的连接池
        SockIOPool pool = SockIOPool.getInstance();
        //设置连接池可用cache服务器列表,服务器构成形式:ip地址+端口号
        pool.setServers(MEM_SERVERS);
        //设置连接池可用cache服务器的权重,和server数组的位置一一对应
        pool.setWeights(MEM_SERVERS_WEIGHT);
        //设置初始连接数
        pool.setInitConn(100);
        //设置最小连接数
        pool.setMinConn(20);
        //设置最大连接数
        pool.setMaxConn(100);
        //设置可用连接的最长等待时间
        pool.setMaxIdle(1000 * 30 * 30);
        //设置连接池维护线程的睡眠时间,设置为0,维护线程不启动
        pool.setMaintSleep(50);
        //设置Nagle算法,设置为false,因为通讯数据量比较大要求响应及时
        pool.setNagle(false);
        //设置socket读取等待超时时间
        pool.setSocketTO(3000);
        //设置连接等待超时值
        pool.setSocketConnectTO(0);
        //失效转移机制
        pool.setFailover(true);
        //状态检测机制
        pool.setAliveCheck(true);
        //设置完参数后,启动pool
        pool.initialize();
        return pool;
    }

    @Bean
    public MemCachedClient memCachedClient() {
        return new MemCachedClient();
    }
}

TestApi.java用来编写测试接口

package com.chris.memcached;

import com.danga.MemCached.MemCachedClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * create by: Chris Chan
 * create on: 2019/11/28 17:04
 * use for: 测试接口
 */
@RestController
@RequestMapping("/test")
public class TestApi {
    @Autowired
    MemCachedClient memCachedClient;

    /**
     * 综合测试
     *
     * @return
     */
    @RequestMapping("/test")
    public String test() {
        // 放入缓存
        boolean flag = memCachedClient.set("username", "kalychen");
        System.out.println(flag);
        // 取出缓存
        Object value = memCachedClient.get("username");
        System.out.println(value);
        return String.valueOf(value);
    }

    /**
     * 写缓存
     *
     * @param k
     * @param v
     * @return
     */
    @RequestMapping("/put")
    public Boolean put(String k, String v) {
        // 放入缓存
        boolean flag = memCachedClient.set(k, v);
        return flag;
    }

    /**
     * 读缓存
     *
     * @param k
     * @return
     */
    @RequestMapping("/get")
    public String get(String k) {
        // 取出缓存
        Object value = memCachedClient.get(k);
        return String.valueOf(value);
    }
}

三、测试一下。

将服务运行起来。在浏览器输入调用。

Springboot整合Memcached_第1张图片

Springboot整合Memcached_第2张图片

Springboot整合Memcached_第3张图片

可以看到,得到的就是我们想要的结果。

参考资料:

https://www.cnblogs.com/GregZQ/p/8365276.html

https://www.jianshu.com/p/5d336c342d71

https://blog.csdn.net/saytime/article/details/80585370

你可能感兴趣的:(Java,Spring,Boot,Docker,memcached,springboot,docker)