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