memcached之java客戶端:spymemcached使用

memcached之java客戶端:spymemcached使用
---------

一個簡單的示例:

[java] view plaincopy
  1. MemcachedClient c = new MemcachedClient(new InetSocketAddress("hostname",portNum));  
  2. //異步方式存儲一個值一個小時  
  3. c.set("someKey",3600,someObject);  
  4. //同步方式獲取一個值  
  5. Object myObject = c.get("someKey");  


利用異步獲取的優勢
MemcachedClient可以異步處理消息,如果一個memcached服務器不能連接,如例,MemcachedConnection將繼續嘗試重新連接。爲了防止造成你的應用程序掛起,可以使用異步機制,異步獲取數據並對超時的請求取消對服務器的操作。
[java] view plaincopy
  1. //獲取一個連接到幾個服務端的memcached的客戶端  
  2. MemcachedClient c = new MemcachedClient(AddrUtil.getAddresses("server1:11211 server2:11211"));  
  3. //獲取值,如果在5秒內沒有返回值,將取消  
  4. Object myObj = null;  
  5. Future<Object> f = c.asyncGet("someKey");  
  6. try{  
  7.     myObj = f.get(5,TimeUnit.SECONDS);  
  8. }catch(TimeoutException e){  
  9.     f.cancel(false);  
  10. }  


建立連接
1.建立一個二進制協議連接
如例:
[java] view plaincopy
  1. //獲取一個通過二進制協議連接到幾個服務端的memcached的客戶端  
  2. MemcachedClient c = new MemcachedClient(new BinaryConnectionFactory(),  
  3.     AddrUtil.getAddresses("server1:11212 server2:11212"));  
  4. ......  
2.建立一個二進制協議的SASL連接

[java] view plaincopy
  1. //創建一個AuthDescriptor,這是一個PLAIN的SASL,因此用戶名與密碼僅僅是字符串  
  2. MemcachedClient mc = null;  
  3. AuthDescriptor ad = new AuthDescriptor(new String[]{"PLAIN"},  
  4.     new PlainCallbackHandler(username,password));  
  5. //然後連接使用ConnectionFactoryBuilder,二進制是必須的  
  6. try{  
  7.     if(mc == null){  
  8.         mc = new MemcachedClient(new ConnectionFactoryBuilder()  
  9.             .setProtocol(Protocol.BINARY)  
  10.             .setAuthDescriptor(ad).build(),  
  11.             AddrUtil.getAddresses(host));  
  12.     }  
  13. }catch(IOException ex){  
  14.     System.err.println("Couldn't create a connection,bailing out:\nIOException"  
  15.     +ex.getMessage());  
  16. }  
3.建立Membase連接(Membase是nosql數據庫)

[java] view plaincopy
  1. MemcachedClient mc;  
  2. try{  
  3.     URI base = new URI("http://localhost:8091/pools");  
  4.     ArrayList baseURIs = new ArrayList();  
  5.     baseURIs.add(base);  
  6.     mc = new MemcachedClient(baseURIs,"bucket_name","bucket_password");  
  7.     ...  
  8. }catch(IOException ex){  
  9.     Logger.getLogger(Main.class.getName).log(Level.SEVERE,null,ex);  
  10. }catch(ConfigurationException ex){  
  11.     Logger.getLogger(Main.class.getName).log(Level.SEVERE,null,ex);  
  12. }catch(URISyntaxException ex){  
  13.     Logger.getLogger(Main.class.getName).log(Level.SEVERE,null,ex);  
  14. }  
  15. mc.set("hello",0,"world");  
  16. String result = (String)mc.get("hello");  
  17. assert(result.equals("world"));  
  18. mc.shutdown(3,TimeUnit.SECONDS);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章