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);
- }
- }
下面是一个测试类
- public static void main(String[] args) {
- // testCRUD();
- testSerObject();
- }
- public static void testCRUD() {
- String address = "xx01:11211 xx02:11211 xx03:11211";
- Cache cache = new Cache(address, new int[] { 1, 1, 1 });
- cache.set("hello", 10, "test");
- System.out.println(cache.get("hello"));
- cache.update("hello", "ssss");
- System.out.println(cache.get("hello"));
- cache.delete("hello");
- System.out.println(cache.get("hello"));
- }
- public static void testSerObject() {
- String address = "arreat00:11211 arreat01:11211 arreat02:11211";
- Cache cache = new Cache(address, new int[] { 1, 1, 1 });
- User user = new User();
- user.setId(1);
- user.setMobile("13564316073");
- user.setEmail("qianjc@unionpaysmart.com");
- user.setPasswd("ttt");
- user.setUserName("qianjc");
- List<String> asseat = new ArrayList<String>();
- asseat.add("asseat0");
- asseat.add("asseat1");
- Map<String, String> car = new HashMap<String, String>();
- car.put("car1", "val1");
- car.put("car2", "val2");
- user.setAsseat(asseat);
- user.setCar(car);
- user.setBook(buildBook(1, "memcached进阶", "smart出版"));
- user.setBooks(buildBooks());
- // cache.set("user1", 0, user);
- System.out.println(cache.get("user1"));
- }
- 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, "memcached进阶" + i, "smart出版" + i));
- }
- return books;
- }
- }
也可以参考一篇博客:http://blog.csdn.net/ljhabc1982/article/details/6338898