1.Memcached介紹
- Memcached是一個免費開源、高性能、分佈式的內存對象緩存系統。
- Memcached是在內存中,爲特定數據(字符串或對象)構建 key-value的小塊數據存儲。
2.Memcached優點
- 讀寫性能優異,特別是高併發時和文件緩存比有明顯優勢。
- Memcache組建支持集羣,並且是自動管理負載均。
3.Memcached缺點
- 緩存空間有限:據說一臺電腦的mem緩存開到2g以上會出現不穩定,數據無故丟失的現象。
- 掉電丟失數據:由於是把數據放在內存裏的,所有一旦機器掉電,數據也就全部丟失了。
一般建議:如果是做內容緩存的話,比如把一些不經常更改的文章放在文件緩存裏比較合適,
而mem則適合放一些頻繁更改的數據,比如可以把session數據放進mem。
4.Memcached下載安裝
下載memcached_en32or64.zip 進行解壓到:(舉例:E:\memcached) 在控制檯輸入命令安裝E:\memcached\memcached.exe -d install 啓動:E:\memcached\memcached.exe -d start或者 net start“memcached Server”5.Memcached實踐
(1)創建Java項目整個項目如圖(第一種方法)
(2)創建包和類,在Demo1寫入代碼編寫Memcached的客戶端
public class Demo1 {
public static void main(String[]args) {
//獲取socke連接池的實列對象
SockIOPool pool=SockIOPool.getInstance();
//服務器列表和其權重
String[] servers={"127.0.0.1:11211"};
Integer[] weights={3};
//設置服務器信息
pool.setServers(servers);
pool.setWeights(weights);
//初始化連接池
pool.initialize();
/*client.setCompressEnable(true);
client.setCompressThreshold(64 * 1024);*/
MemCachedClient client =new MemCachedClient();
//添加
client.add("school","八維");
}
}
(3)測試類Test1
public class Test1{
public static void main(String[]args) {
//獲取socke連接池的實列對象
SockIOPool pool=SockIOPool.getInstance();
//服務器列表和其權重11211爲默認端口號
String[] servers={"127.0.0.1:11211"};
Integer[] weights={3};
//設置服務器信息
pool.setServers(servers);
pool.setWeights(weights);
//初始化連接池
pool.initialize();
MemCachedClient client =new MemCachedClient();
//取值
Object object =client.get("school");
System.out.println(object);
}
}
(4)效果展示
(1)創建Java項目整個項目圖如下(第二種方法)
(2)創建包和類,在Demo1種寫入代碼編寫Memcached的客戶端
public class Demo1 {
public static void main(String[] args) {
//實現 IP 套接字地址(IP 地址 + 端口號)
InetSocketAddress ins = new InetSocketAddress("127.0.0.1",11211);
try {
MemcachedClient client = new MemcachedClient(ins);
//第一個參數:鍵(key)
//第二個參數:過期時間(單位是秒)
//第三個參數:要設置緩存中的對象(value)如果沒 有插入,有則修改
//client.add("name", 3600, "李倩倩");
//client.add("name1", 60, "周杰倫");
client.add("dog", 3600, "笨笨");
//當時間過期後再次取值時爲null
} catch (IOException e) {
e.printStackTrace();
}
}
}
(3)測試類Test1
public class Demo2 {
public static void main(String[] args) {
//實現 IP 套接字地址(IP 地址 + 端口號)
InetSocketAddress ins = new InetSocketAddress("127.0.0.1",11211);
try {
MemcachedClient client = new MemcachedClient(ins);
//獲取
Object object = client.get("dog");
System.out.println(object);
} catch (Exception e) {
e.printStackTrace();
}
}
}
(4)效果展示
(5)Demo2類測試
public class Demo2 {
public static void main(String[] args) {
try {
//實現 IP 套接字地址(IP 地址 + 端口號)
InetSocketAddress ins = new InetSocketAddress("127.0.0.1",11211);
MemcachedClient client = new MemcachedClient(ins);
CASValue<Object> gets = client.gets("dog");
CASValue<Object> gets1 = client.gets("dog");
System.out.println(gets.getValue()+""+gets.getCas());
System.out.println(gets1.getValue()+""+gets.getCas());
} catch (Exception e) {
e.printStackTrace();
}
}
}
(5)效果展示
搜索5.
Memcached緩存
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.