XMemcached是一個新java memcached client。也許你還不知道memcached是什麼?能夠先看看這裏。簡單來講,Memcached 是一個高性能的分佈式內存對象的key-value緩存系統,用於動態Web應用以減輕數據庫負載,如今也有不少人將它做爲內存式數據庫在使用,memcached經過它的自定義協議與客戶端交互,而XMemcached就是它的一個java客戶端實現。java
一、高性能
二、支持完整的memcached文本協議,二進制協議將在1.2版本實現。
三、支持JMX,能夠經過MBean調整性能參數、動態添加/移除server、查看統計等。
四、支持客戶端統計
五、支持memcached節點的動態增減。
六、支持memcached分佈:餘數分佈和一致性哈希分佈。
七、更多的性能調整選項。spring
MemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("192.168.1.107:11211")); MemcachedClient client = null; client = builder.build(); client.set("userid", 30, 1);// 此處30爲過時時間,單位:秒 logger.info("set後結果爲:" + (Integer)client.get("userid")); client.get("userid", 1000);// 此處1000表示超時時間爲1秒 client.add("username", 0, "hello");// 0表示永久存儲 logger.info("add後結果爲:" + (String)client.get("username")); client.append("username", "1"); logger.info("append後結果爲:" + (String)client.get("username")); client.delete("username"); logger.info("delete後結果爲:" + (String)client.get("username")); client.shutdown();
[main] allapp.XmemcachedApp1 - set後結果爲:1 [main] allapp.XmemcachedApp1 - add後結果爲:hello [main] allapp.XmemcachedApp1 - append後結果爲:hello1 [main] allapp.XmemcachedApp1 - delete後結果爲:null
一致性哈希配置:數據庫
MemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses("server1:11211 server2:11211 server3:11211")); builder.setSessionLocator(new KetamaMemcachedSessionLocator()); MemcachedClient client = builder.build();
集成spring配置:緩存
<bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown"> <property name="servers"> <value>192.168.1.107:11211</value> </property> </bean>
ApplicationContext context = new ClassPathXmlApplicationContext( "/spring/memcached-config.xml"); MemcachedClient client = (MemcachedClient) context .getBean("memcachedClient"); client.set("name1", 0, "hahah"); logger.info((String)client.get("name1"));
Xmemcached項目wiki:http://code.google.com/p/xmemcached/w/listruby