设为首页 收藏本站
查看: 1337|回复: 0

[经验分享] memcached-java客户端xmemcached简单使用

[复制链接]

尚未签到

发表于 2015-11-18 14:45:43 | 显示全部楼层 |阅读模式
  1. 前一篇文章简单说了下如何安装memcached,想到了memcached是分布式的缓存框架,所以自己在公司的3台测试机上安装了下。
  2. 关于什么是xmemcached就不多说了,其实就是实现了memcached的java客户端,关于分布式下一篇会稍微详细点介绍,这里只要知道这个分布式其实是客户端的分布式,其实是没有主从节点的概念的。
  3. 直接贴代码,看看如何使用
  

import java.io.IOException;
import java.util.concurrent.TimeoutException;
import net.rubyeye.xmemcached.CASOperation;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;
public class Cache {
private MemcachedClientBuilder builder = null;
private MemcachedClient client = null;
public Cache(String address, int[] weight) {
builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(address), weight);
builder.setConnectionPoolSize(5);
try {
client = builder.build();
} catch (IOException e) {
e.printStackTrace();
}
}
public void set(String key, int exp, Object value) {
try {
if (!client.set(key, exp, value)) {
System.err.println("set error, key is " + key + " value is " + value);
}
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
}
public void delete(String key) {
try {
client.delete(key);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
}
public void update(String key, final Object value) {
try {
client.cas(key, 10, new CASOperation<Object>() {
public int getMaxTries() {
return 1;
}
public Object getNewValue(long currentCAS, Object currentValue) {
return value;
}
});
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
}
public Object get(String key) {
try {
return client.get(key);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
return null;
}
public void addServer(String server, int port, int weight) {
try {
client.addServer(server, port, weight);
} catch (IOException e) {
e.printStackTrace();
}
}
public void removeServer(String hostList) {
client.removeServer(hostList);
}
}
这个类做了一个特别简单的封装,包括了增删改查还有动态添加删除节点,其实就是简单得使用了下api,其实api很多,大家可以自己查api  
  下面是一个测试类
  

public static void main(String[] args) {
//testCRUD();
testSerObject();
}
public static void testCRUD() {
String address = &quot;xx01:11211 xx02:11211 xx03:11211&quot;;
Cache cache = new Cache(address, new int[] { 1, 1, 1 });
cache.set(&quot;hello&quot;, 10, &quot;test&quot;);
System.out.println(cache.get(&quot;hello&quot;));
cache.update(&quot;hello&quot;, &quot;ssss&quot;);
System.out.println(cache.get(&quot;hello&quot;));
cache.delete(&quot;hello&quot;);
System.out.println(cache.get(&quot;hello&quot;));
}
public static void testSerObject() {
String address = &quot;arreat00:11211 arreat01:11211 arreat02:11211&quot;;
Cache cache = new Cache(address, new int[] { 1, 1, 1 });
User user = new User();
user.setId(1);
user.setMobile(&quot;13564316073&quot;);
user.setEmail(&quot;qianjc@unionpaysmart.com&quot;);
user.setPasswd(&quot;ttt&quot;);
user.setUserName(&quot;qianjc&quot;);
List<String> asseat = new ArrayList<String>();
asseat.add(&quot;asseat0&quot;);
asseat.add(&quot;asseat1&quot;);
Map<String, String> car = new HashMap<String, String>();
car.put(&quot;car1&quot;, &quot;val1&quot;);
car.put(&quot;car2&quot;, &quot;val2&quot;);
user.setAsseat(asseat);
user.setCar(car);
user.setBook(buildBook(1, &quot;memcached进阶&quot;, &quot;smart出版&quot;));
user.setBooks(buildBooks());
//cache.set(&quot;user1&quot;, 0, user);
System.out.println(cache.get(&quot;user1&quot;));
}
public static Book buildBook(int id, String name, String pulish) {
Book book = new Book();
book.setId(id);
book.setName(name);
book.setPulish(pulish);
return book;
}
public static List<Book> buildBooks() {
List<Book> books = new ArrayList<Book>();
for (int i = 0; i < 2; ++i) {
books.add(buildBook(i, &quot;memcached进阶&quot; + i, &quot;smart出版&quot; + i));
}
return books;
}
}可以看到memcached不仅仅支持简单String,int等类型,只要实现了Serializable接口的java序列化对象都可以  
  


  


  具体怎么使用可以查api,还是比较简单的!!

也可以参考一篇博客:http://blog.iyunv.com/ljhabc1982/article/details/6338898





版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140794-1-1.html 上篇帖子: ubuntu安装memcached 下篇帖子: win7下安装memcached
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表