Springboot整合Memcached

33 篇文章 1 订阅
8 篇文章 0 订阅

一、首先我们使用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依赖

        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.5.6</version>
        </dependency>

        <!-- memcached -->
        <dependency>
            <groupId>com.danga</groupId>
            <artifactId>java_memcached-release</artifactId>
            <version>2.6.6</version>
        </dependency>

注意:这样做你会发现依赖库根本找不到。这是因为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);
    }
}

三、测试一下。

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

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

参考资料:

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值