Spring Boot 和 Memcached 的解決方案html
Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,可是客戶端能夠用任何語言來編寫,並經過memcached協議與守護進程通訊。java
由於 Spring Boot 沒有針對 Memcached 提供對應的組建包,所以須要咱們本身來集成。官方推出的 Java 客戶端 Spymemcached 是一個比較好的選擇之一。git
Spymemcached 介紹github
Spymemcached 最先由 Dustin Sallings 開發,Dustin 後來和別人一塊兒創辦了 Couchbase (原NorthScale),職位爲首席架構師。2014 加入 Google。spring
Spymemcached 是一個採用 Java 開發的異步、單線程的 Memcached 客戶端, 使用 NIO 實現。Spymemcached 是 Memcached 的一個流行的 Java client 庫,性能表現出色,普遍應用於 Java + Memcached 項目中。數據庫
添加依賴緩存
pomx 包中添加 spymemcached 的引用springboot
<dependency> <groupId>net.spy</groupId> <artifactId>spymemcached</artifactId> <version>2.12.2</version> </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.*
爲開通將對應的配置文件加載到屬性中。
咱們使用上一節的內容Spring Boot 2.0(七):Spring Boot 如何解決項目啓動時初始化資源,利用 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("testkey",1000,"666666"); System.out.println("*********** "+memcachedClient.get("testkey").toString()); } }
使用中先測試插入一個 key 爲 testkey ,1000 爲過時時間單位爲 毫秒,最後的 "666666" 爲 key 對應的值。
執行測試用例 testSetGet ,控制檯輸出內容:
*********** 666666
代表測試成功。
若是你們想系統學習Spring Boot 歡迎關注我在51CTO的課程:微服務技術架構和大數據治理實戰
此專欄之會介紹微服務架構實踐、Spring Boot 和 MongoDB 使用、微服務架構下數據處理有進一步的瞭解,具有使用 Spring Boot 開發微服務項目、利用相關技術解決微服務架構中數據治理的疼點。
專欄地址:微服務技術架構和大數據治理實戰