Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,可是客戶端能夠用任何語言來編寫,並經過memcached協議與守護進程通訊。
爲了提升性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。因爲數據僅存在於內存中,所以重啓memcached、重啓操做系統會致使所有數據消失。另外,內容容量達到指定值以後,就基於LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached自己是爲緩存而設計的服務器,所以並無過多考慮數據的永久性問題。html
參考教材https://www.runoob.com/memcached/window-install-memcached.htmljava
要先安裝libevent庫
sudo apt-get install libevent ibevent-devlinux
自動安裝
sudo apt-get install memcachedgit
或者源代碼的方式安裝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目錄,實際狀況要根據進程信息顯示的目錄爲準。數據庫
@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;
}
}
@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;
}
}
@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"));
}
}
運行測試類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