Memcached-api

    xiaoxiao2026-05-13  8

    1、相关类

    package com.memcached.util; import java.io.Serializable; public class User implements Serializable{          private Integer id;     private String username;     private String password;          public User() {         super();         // TODO Auto-generated constructor stub     }     public User(Integer id, String username, String password) {         super();         this.id = id;         this.username = username;         this.password = password;     }     public Integer getId() {         return id;     }     public void setId(Integer id) {         this.id = id;     }     public String getUsername() {         return username;     }     public void setUsername(String username) {         this.username = username;     }     public String getPassword() {         return password;     }     public void setPassword(String password) {         this.password = password;     }      }

    package com.memcached.util; import java.io.IOException; import java.util.Properties; import org.apache.log4j.Logger; public class PropertyUtils {     private static Logger log = Logger.getLogger(MemcachedClientUtil.class);          public static Properties properties = new Properties();          /**      * 根据配置文件名和配置键名查询配置值      * @param key      * @param propertiesFileName      * @return      * @author wuliu      * @date   2015-6-5      */     public static String getValue(String key,String propertiesFileName){         try {             properties.load(PropertyUtils.class.getClassLoader().getResourceAsStream(propertiesFileName));         } catch (IOException e) {             log.info(propertiesFileName + "文件没有找到......");         }                  return properties.getProperty(key).trim();     } } package com.memcached.util; import java.io.IOException; import org.apache.log4j.Logger; import org.omg.CosNaming.NamingContextExtPackage.AddressHelper; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.MemcachedClientBuilder; import net.rubyeye.xmemcached.XMemcachedClient; import net.rubyeye.xmemcached.XMemcachedClientBuilder; import net.rubyeye.xmemcached.utils.AddrUtil; /**  * memcached客户端工具类  * @author wuliu  * @date 2015-07-28  */ public class MemcachedClientUtil {               private static Logger log = Logger.getLogger(MemcachedClientUtil.class);          /**      * memcached客户端      */     private static MemcachedClient memcachedClient;          private static MemcachedClientBuilder builder;     /**      * 配置文件名      */     private static String propertiesFileName;     /**      * memcached的服务      */     private static String server;          private MemcachedClientUtil(){}          /**      * 初始化连接      */     private static void init(){         propertiesFileName = "xmemcached.properties";         server = PropertyUtils.getValue("memcached.server", propertiesFileName) + ":" + PropertyUtils.getValue("memcached.port", propertiesFileName);         builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(server), new int[]{5});         //设置连接池大小,即客户端个数         builder.setConnectionPoolSize(Integer.valueOf(PropertyUtils.getValue("memcached.connectionPoolSize", propertiesFileName)));         //宕机报警 //        builder.setFailureMode(true);         //使用二进制文件   //        builder.setCommandFactory(new BinaryCommandFactory());     }               /**      * 获取memcached客户端      * @return      * @author wuliu      * @date   2015-07-28      */     public static MemcachedClient getMemcachedClient() {         try {             if(memcachedClient == null) {                 init();                 memcachedClient = builder.build();                 // 装载数据时,关闭心跳检测                 memcachedClient.setEnableHeartBeat(false);             }                      } catch (IOException e) {             log.error("获取memcached客户端异常", e);         }         return memcachedClient;     }          /**      * 关闭memcachedClient客户端的连接      * @param mm          MemcachedClient客户端      * @author wuliu      * @date   2015-07-28      */     public static void closeMemcachedClient(MemcachedClient mm) {         if(mm != null) {             try {                 mm.shutdown();             } catch (IOException e) {                 log.error("memcachedClient客户端关闭异常", e);             }         }     } }

    2、xmemcached.properties配置文件

    memcached.isOpen=true memcached.expires=5 memcached.server=127.0.0.1 memcached.port=11211 memcached.connectionPoolSize=30 3、测试类

    package com.memcached.util; import java.util.HashMap; import java.util.Map; import net.rubyeye.xmemcached.Counter; import net.rubyeye.xmemcached.MemcachedClient; public class MemcachedDemo {          public static void main(String[] args) throws Exception {         // 获取memcached连接         MemcachedClient memcachedClient = MemcachedClientUtil.getMemcachedClient(); //        memcachedClient.flushAll();         //设置指定键对应的值(过期时间单位秒),如果没有则添加,有则修改 //      boolean set_username = memcachedClient.set("username", 0 , "admin0"); //      System.out.println(set_username);                  //设置指定键的新值,如果有则修改返回true(相同值也返回false);如果没有则不做操作返回false; //        boolean replace_username = memcachedClient.replace("username", 0, "admin2"); //        System.out.println(replace_username);                  //设置键的值,如果没有则插入返回true;如果有则不操作返回false; //        boolean add_username2 = memcachedClient.add("username2",0,"admin21"); //        System.out.println(add_username2);                  //删除指定键 //        memcachedClient.delete("username");         //获取指定键对应的值 //      String username = (String)memcachedClient.get("username"); //      System.out.println(username);          //        List<String> list = new ArrayList<String>(); //        list.add("100"); //        list.add("101"); //        list.add("102"); //        memcachedClient.set("m-list", 0, list); //        List<String> resultList = memcachedClient.get("m-list"); //        for(String str : resultList){ //            System.out.println(str); //        }          //        Set<String> set = new HashSet<String>(); //        set.add("1000"); //        set.add("1001"); //        set.add("1002"); //        memcachedClient.set("m-set", 0, set); //         //        Set<String> resultSet = memcachedClient.get("m-set"); //        Iterator<String> it = resultSet.iterator(); //        while(it.hasNext()){ //            System.out.println(it.next()); //        }          //        Map<String,Object> map = new HashMap<String, Object>(); //        map.put("username", "admin"); //        map.put("password", "123"); //        memcachedClient.set("m-map", 0, map); //         //        Map<String,Object> resultMap = memcachedClient.get("m-map"); //        for(Map.Entry<String, Object> entry : resultMap.entrySet()){ //            System.out.println(entry.getKey()+"="+entry.getValue()); //        }          //        memcachedClient.set("m-user", 0, new User(1,"admin","123456")); //        User user = memcachedClient.get("m-user"); //        if(user != null){ //            System.out.println(user.getId()+","+user.getUsername()+","+user.getPassword()); //        }                  // 第一个参数指定递增的key名称, 第二个参数指定递增的幅度大小, 第三个参数指定当key不存在的情况下的初始值即设置一个新建为1。         //返回变化后的值 //        long l = memcachedClient.incr("incrkey", 5, 1); //        System.out.println(l);         //两个参数的重载方法省略了第三个参数,默认指定为0。 //        memcachedClient.incr("key1", 5); //        memcachedClient.decr("incrkey", 1); //        counter(memcachedClient);         MemcachedClientUtil.closeMemcachedClient(memcachedClient);     }          /**      * 计数器的操作      *      * @version 2016年10月31日上午11:00:21      * @author wuliu      * @param memcachedClient      * @throws Exception      */     public static void counter(MemcachedClient memcachedClient) throws Exception{         Counter counter = memcachedClient.getCounter("counter", 0); //        long incr = counter.incrementAndGet(); //        System.out.println(incr); //        long decr = counter.decrementAndGet(); //        System.out.println(decr); //        long add = counter.addAndGet(-10);     } }

    转载请注明原文地址: https://ju.6miu.com/read-1309628.html
    最新回复(0)