Memcached緩存

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 startmemcached 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)效果展示

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章