Java_memcached-release
一、了解和使用使用安裝memcached
在這一塊已經(jīng)有車了,就不再造了。
一個(gè)日本君寫的:
長(zhǎng)野雅廣
memcached-
全面剖析.pdf
heiyeluren(
黑夜路人)
Memcached-
原理和使用詳解.pdf
下面截圖:





二、java memcached
客啟端的調(diào)用
2.1
下載客戶端jar
包 java_memcached-release_X.x.jar
https://github.com/gwhalin/Memcached-Java-Client
可下載最新
三、簡(jiǎn)單Demo
建工程、拷jar
包、再拷下面代碼。
package com.ea.online.memcache;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class SimpleMemCachedClient {
protected static MemCachedClient mcc = new MemCachedClient();
protected static SockIOPool sUpool = null;
static {
String[] servers = { "localhost:11211" };
Integer[] weights = { 3, 3, 2 };
sUpool = SockIOPool.getInstance();
sUpool.setServers(servers);
sUpool.setWeights(weights);
sUpool.setMaintSleep(30);
sUpool.setNagle(false);
sUpool.setSocketTO(3000);
sUpool.setSocketConnectTO(0);
sUpool.initialize();
}
public static void main(String[] args) {
mcc.set("testKey", "This is a test String",
new Date(new Date().getTime() + 10000));// 過(guò)期時(shí)間為10秒
String bar = mcc.get("testKey").toString();
System.out.println("testKey-->" + bar);
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(mcc.get("testKey"));
}
}
}
Demo
成功后就講 下面兩個(gè)類的一些設(shè)置參數(shù):SockIOPool
、MemCachedClient
四、SockIOPool
是socket
連接池類
setServers(String[]
servers)
:設(shè)置服務(wù)器信息數(shù)組;
setWeights(String[]
weights)
:設(shè)置服務(wù)器權(quán)重?cái)?shù)組;
setInitConn(int
count)
:設(shè)置初始連接數(shù);
setMinConn(int
minConn)
:設(shè)置最小連接數(shù);
setMaxConn(int
maxConn)
:設(shè)置最大連接數(shù);
setMaxIdle(long
arg0)
:設(shè)置最大處理時(shí)間;
setMaintSleep(long
arg0)
:主線程的睡眠時(shí)間;
initialize()
:初始化連接池。
|
五、MemCachedClient
類及其常用方法
add(String
key, Object value)
:添加一個(gè)鍵值對(duì)到緩存中;
add(String
key, Object value,Date expires)
:添加一個(gè)鍵值對(duì)到緩存中,并設(shè)置其超時(shí)時(shí)間;
set(String
key, Object value)
:在緩存中設(shè)置一個(gè)鍵的值;
set(String
key, Object value, Date expires)
:在緩存中設(shè)置一個(gè)鍵的值,并設(shè)置其超時(shí)時(shí)間;
get(String
key)
:獲得某個(gè)鍵的值。
incr(String
key)
:為某個(gè)鍵上的值執(zhí)行+1
操作;
decr(String
key)
:為某個(gè)鍵上的值執(zhí)行-1
操作;
replace(String
key, String value)
:將某個(gè)鍵的值替換成新的值;
replace(String
key, String value, Date expires)
:將某個(gè)鍵的值替換成新的值,并設(shè)置其超時(shí)時(shí)間。
|
六、Memcached
優(yōu)化
可以參考:
hyj_dx
http://hyj-dx./blog/305161
1、客戶端在與 memcached 服務(wù)建立連接之后,進(jìn)行存取對(duì)象的操作,每個(gè)被存取的對(duì)象都有一個(gè)唯一的標(biāo)識(shí)符 key,存取操作均通過(guò)這個(gè)
key 進(jìn)行,保存到 memcached 中的對(duì)象實(shí)際上是放置內(nèi)存中的,并不是保存在 cache 文件中的,這也是為什么 memcached
能夠如此高效快速的原因。注意,這些對(duì)象并不是持久的,服務(wù)停止之后,里邊的數(shù)據(jù)就會(huì)丟失。
2、當(dāng)存入cached的數(shù)據(jù)超過(guò)了cached的容量后會(huì)將最長(zhǎng)時(shí)間沒(méi)調(diào)用的對(duì)象擠出,這正好應(yīng)征了cached的特征。
3、利用memcached常用的做法:在每取得一次cached對(duì)象后,重新設(shè)置這個(gè)對(duì)象的cache時(shí)間,這樣能夠使得經(jīng)常被調(diào)用的對(duì)象可以長(zhǎng)期滯留在緩存中,使得效率增倍。
memcached 技術(shù)配置參數(shù)研究
failover表示對(duì)于服務(wù)器出現(xiàn)問(wèn)題時(shí)的自動(dòng)修復(fù)。
initConn初始的時(shí)候連接數(shù),
minConn表示最小閑置連接數(shù),
maxConn最大連接數(shù),
maintSleep表示是否需要延時(shí)結(jié)束
nagle是TCP對(duì)于socket創(chuàng)建的算法,
socketTO是socket連接超時(shí)時(shí)間,
aliveCheck表示心跳檢查,確定服務(wù)器的狀態(tài)。
Servers是memcached服務(wù)端開(kāi)的地址和ip列表字符串,
weights是上面服務(wù)器的權(quán)重,必須數(shù)量一致,否則權(quán)重?zé)o效
可從以下幾方面考慮優(yōu)化
1. 重新設(shè)置配置參數(shù)。
2. 盡量使用小容量的數(shù)據(jù)內(nèi)容.
3. 增加memcached提高服務(wù)獲取的內(nèi)存總量、提高命中率。
4. 可以采用多個(gè)memcache服務(wù)進(jìn)行偵聽(tīng),分開(kāi)處理,針對(duì)服務(wù)提供的頻繁度劃分服務(wù)內(nèi)存
5. 根據(jù)服務(wù)器的性能不同設(shè)置權(quán)重 weights
6. 對(duì)需要使用memcache服務(wù)的機(jī)器ip,服務(wù)端做訪問(wèn)限制。
避免memcached里的數(shù)據(jù)不會(huì)被別有心意的人再利用,或責(zé)保證服務(wù)器的內(nèi)存不被漫天遍地的垃圾數(shù)據(jù)所堆積,造成命中極低
7. 優(yōu)化memcached客戶端的代碼。
、、、、、、、、、、
七、小技巧
h 顯示幫助
-p 監(jiān)聽(tīng)的端口
-l 連接的IP地址, 默認(rèn)是本機(jī)
-d start 啟動(dòng)memcached服務(wù)
-d restart 重起memcached服務(wù)
-d stop|shutdown 關(guān)閉正在運(yùn)行的memcached服務(wù)
-d install 安裝memcached服務(wù)
-d uninstall 卸載memcached服務(wù)
-u 以的身份運(yùn)行 (僅在以root運(yùn)行的時(shí)候有效)
-m 最大內(nèi)存使用,單位MB。默認(rèn)為64MB
-M 內(nèi)存耗盡時(shí)返回錯(cuò)誤,而不是刪除項(xiàng)
-c 最大同時(shí)連接數(shù),默認(rèn)為1024
-f 塊大小增長(zhǎng)因子,默認(rèn)為1.25
-n 最小分配空間,key+value+flags默認(rèn)為48