SpringBoot整合Memached

1、Memached介紹

  Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,可是客戶端能夠用任何語言來編寫,並經過memcached協議與守護進程通訊。
  爲了提升性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。因爲數據僅存在於內存中,所以重啓memcached、重啓操做系統會致使所有數據消失。另外,內容容量達到指定值以後,就基於LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached自己是爲緩存而設計的服務器,所以並無過多考慮數據的永久性問題。html

2、安裝步驟

windows安裝

參考教材https://www.runoob.com/memcached/window-install-memcached.htmljava

linux(Ubuntu/Debian)安裝

  1. 要先安裝libevent庫
    sudo apt-get install libevent ibevent-devlinux

  2. 自動安裝
    sudo apt-get install memcachedgit

  3. 或者源代碼的方式安裝github

從其官方網站(http://memcached.org)下載memcached
解壓源碼 tar -zxvf memcached-1.x.x.tar.gz
進入目錄
配置 ./configure --prefix=/path/to/memcached
編譯 make && make test
安裝 sudo make install算法

更多參考https://www.runoob.com/memcached/memcached-install.htmlspring

安裝完成後memcached已經啓動了,咱們先殺掉進程而後按照本身的方式做爲後臺服務啓動。
/usr/bin/memcached -p 11211 -m 64m -d -u root
最後打開cmd,輸入 telnet ip 11211來鏈接memcached進行測試。
注意: 個人自動安裝後是在/usr/bin目錄,實際狀況要根據進程信息顯示的目錄爲準。數據庫

  1. set foo 0 0 3 
  2. bar 
  3. STORED 
  4. get foo 
  5. VALUE foo 0 3 
  6. bar 
  7. END 
  8. quit 

3、完成整合

  1. 建立springboot項目memcached-demo
  2. 在 pomx 包中添加 spymemcached 的引用,Spymemcached 是一個採用 Java 開發的異步、單線程的 Memcached 客戶端, 使用 NIO 實現。
  1. <dependency> 
  2. <groupId>net.spy</groupId> 
  3. <artifactId>spymemcached</artifactId> 
  4. <version>2.12.2</version> 
  5. </dependency> 
  1. 在application.properties文件填寫配置信息
    memcached.ip=XXX
    memcached.port=11211
  2. 對應的配置讀取類MemcachedConfig
@Component
@ConfigurationProperties(prefix = "memcached")
public class MemcachedConfig {

    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;
    }
}
  1. 項目啓動時建立MemcachedClient實例
@SpringBootApplication
public class MemcachedDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MemcachedDemoApplication.class, args);
    }

    final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private MemcachedConfig memcachedConfig;

    @Bean(name = "memcachedClient")
    public MemcachedClient getMemcachedClient(){
        try {
            MemcachedClient client = new MemcachedClient(new InetSocketAddress(memcachedConfig.getIp(), memcachedConfig.getPort()));
            return client;
        } catch (IOException e) {
            logger.error("初始化MemcachedClient失敗,{}",e.getMessage());
            e.printStackTrace();
        }
        return null;
    }
}
  1. 編寫測試類
@RunWith(SpringRunner.class)
@SpringBootTest
public class MemcachedDemoApplicationTests {

    @Autowired
    private MemcachedClient client;


    @Test
    public void contextLoads() {
        client.set("testKey",1000,"testValue");
        System.out.println("============testKey的值爲:"+client.get("testKey"));
    }

}

4、測試總結

運行測試類MemcachedDemoApplicationTests中的contextLoads方法,控制檯輸出以下:ubuntu

2019-05-06 19:52:26.693 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/198.13.40.234:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2019-05-06 19:52:27.312  INFO 10348 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-05-06 19:52:27.668  INFO 10348 --- [           main] cn.sp.MemcachedDemoApplicationTests      : Started MemcachedDemoApplicationTests in 2.966 seconds (JVM running for 4.14)
============testKey的值爲:testValue
2019-05-06 19:52:28.052  INFO 10348 --- [       Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
2019-05-06 19:52:28.059 INFO net.spy.memcached.MemcachedConnection:  Shut down memcached client

Memcached上手起來仍是比較簡單,可是還有些其餘命令須要熟悉,以及多臺Memcached 的使用問題。
代碼地址,點擊這裏windows

相關文章
相關標籤/搜索