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