zoukankan      html  css  js  c++  java
  • Java使用memcached

    1.加载commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar

    2.创建memcached工具类:

    1. public class MemcachedUtil {  
    2.   
    3.     /** 
    4.      * memcached客户端单例 
    5.      */  
    6.     private static MemCachedClient cachedClient = new MemCachedClient();  
    7.       
    8.     /** 
    9.      * 初始化连接池 
    10.      */  
    11.     static {  
    12.         //获取连接池的实例  
    13.         SockIOPool pool = SockIOPool.getInstance();  
    14.           
    15.         //服务器列表及其权重  
    16.         String[] servers = {"127.0.0.1:11211"};  
    17.         Integer[] weights = {3};  
    18.           
    19.         //设置服务器信息  
    20.         pool.setServers(servers);  
    21.         pool.setWeights(weights);  
    22.           
    23.         //设置初始连接数、最小连接数、最大连接数、最大处理时间  
    24.         pool.setInitConn(10);  
    25.         pool.setMinConn(10);  
    26.         pool.setMaxConn(1000);  
    27.         pool.setMaxIdle(1000*60*60);  
    28.           
    29.         //设置连接池守护线程的睡眠时间  
    30.         pool.setMaintSleep(60);  
    31.           
    32.         //设置TCP参数,连接超时  
    33.         pool.setNagle(false);  
    34.         pool.setSocketTO(60);  
    35.         pool.setSocketConnectTO(0);  
    36.           
    37.         //初始化并启动连接池  
    38.         pool.initialize();  
    39.           
    40.         //压缩设置,超过指定大小的都压缩  
    41. //      cachedClient.setCompressEnable(true);  
    42. //      cachedClient.setCompressThreshold(1024*1024);  
    43.     }  
    44.       
    45.     private MemcachedUtil(){  
    46.     }  
    47.       
    48.     public static boolean add(String key, Object value) {  
    49.         return cachedClient.add(key, value);  
    50.     }  
    51.       
    52.     public static boolean add(String key, Object value, Integer expire) {  
    53.         return cachedClient.add(key, value, expire);  
    54.     }  
    55.       
    56.     public static boolean put(String key, Object value) {  
    57.         return cachedClient.set(key, value);  
    58.     }  
    59.       
    60.     public static boolean put(String key, Object value, Integer expire) {  
    61.         return cachedClient.set(key, value, expire);  
    62.     }  
    63.       
    64.     public static boolean replace(String key, Object value) {  
    65.         return cachedClient.replace(key, value);  
    66.     }  
    67.       
    68.     public static boolean replace(String key, Object value, Integer expire) {  
    69.         return cachedClient.replace(key, value, expire);  
    70.     }  
    71.       
    72.     public static Object get(String key) {  
    73.         return cachedClient.get(key);  
    74.     }  
    75.       
    76. }  


    3. 创建需要缓存的对象:

    1. public class UserBean implements Serializable {  
    2.   
    3.     private static final long serialVersionUID = 9174194101246733501L;  
    4.   
    5.     private String username;  
    6.       
    7.     private String password;  
    8.       
    9.     public UserBean(String username, String password) {  
    10.         this.username = username;  
    11.         this.password = password;  
    12.     }  
    13.       
    14.     public String getUsername() {  
    15.         return username;  
    16.     }  
    17.       
    18.     public void setUsername(String username) {  
    19.         this.username = username;  
    20.     }  
    21.       
    22.     public String getPassword() {  
    23.         return password;  
    24.     }  
    25.       
    26.     public void setPassword(String password) {  
    27.         this.password = password;  
    28.     }  
    29.       
    30.     @Override  
    31.     public int hashCode() {  
    32.         final int prime = 31;  
    33.         int result = 1;  
    34.         result = prime * result  
    35.                 + ((password == null) ? 0 : password.hashCode());  
    36.         result = prime * result  
    37.                 + ((username == null) ? 0 : username.hashCode());  
    38.         return result;  
    39.     }  
    40.   
    41.     @Override  
    42.     public boolean equals(Object obj) {  
    43.         if (this == obj)  
    44.             return true;  
    45.         if (obj == null)  
    46.             return false;  
    47.         if (getClass() != obj.getClass())  
    48.             return false;  
    49.         UserBean other = (UserBean) obj;  
    50.         if (password == null) {  
    51.             if (other.password != null)  
    52.                 return false;  
    53.         } else if (!password.equals(other.password))  
    54.             return false;  
    55.         if (username == null) {  
    56.             if (other.username != null)  
    57.                 return false;  
    58.         } else if (!username.equals(other.username))  
    59.             return false;  
    60.         return true;  
    61.     }  
    62.   
    63.     @Override  
    64.     public String toString() {  
    65.         return "username:" + username + ",password:" + password;  
    66.     }  
    67. }  


    4.创建测试用例:

    1. public class MemcachedUtilTest {  
    2.   
    3.     @Test  
    4.     public void testMemcached() {  
    5.         MemcachedUtil.put("hello", "world", 60);  
    6.         String hello = (String) MemcachedUtil.get("hello");  
    7.         Assert.assertEquals("world", hello);  
    8.           
    9.         for(int i = 0; i < 10000000; ++i) {  
    10.             UserBean userBean = new UserBean("Jason" + i, "123456-" + i);  
    11.             MemcachedUtil.put("user" + i, userBean, 60);  
    12.             Object obj = MemcachedUtil.get("user" + i);  
    13.             Assert.assertEquals(userBean, obj);  
    14.         }  
    15.     }  
    16. }  


    5.通过spring注入memcached:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    5.            http://www.springframework.org/schema/beans/spring-beans.xsd">  
    6.   
    7.     <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"   
    8.         factory-method="getInstance" init-method="initialize">  
    9.         <constructor-arg>  
    10.             <value>neeaMemcachedPool</value>  
    11.         </constructor-arg>  
    12.         <property name="servers">  
    13.             <list>  
    14.                 <value>127.0.0.1:11211</value>  
    15.             </list>  
    16.         </property>  
    17.         <property name="initConn">  
    18.             <value>20</value>  
    19.         </property>  
    20.         <property name="minConn">  
    21.             <value>10</value>  
    22.         </property>  
    23.         <property name="maxConn">  
    24.             <value>50</value>  
    25.         </property>  
    26.         <property name="nagle">  
    27.             <value>false</value>  
    28.         </property>  
    29.         <property name="socketTO">  
    30.             <value>3000</value>  
    31.         </property>  
    32.     </bean>  
    33.     <bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient">  
    34.         <constructor-arg>  
    35.             <value>neeaMemcachedPool</value>  
    36.         </constructor-arg>  
    37.     </bean>  
    38. </beans>  


    6.创建测试用例:

      1. public class MemcachedSpringTest {  
      2.   
      3.     private MemCachedClient cachedClient;  
      4.       
      5.     @Before  
      6.     public void init() {  
      7.         ApplicationContext context = new ClassPathXmlApplicationContext("com/loujinhe/config/beans.xml");  
      8.         cachedClient = (MemCachedClient)context.getBean("memcachedClient");  
      9.     }  
      10.       
      11.     @Test  
      12.     public void testMemcachedSpring() {  
      13.         UserBean user = new UserBean("lou", "jason");  
      14.         cachedClient.set("user", user);  
      15.         UserBean cachedBean = (UserBean)user;  
      16.         Assert.assertEquals(user, cachedBean);  
      17.     }  
  • 相关阅读:
    趣味网站、趣味应用
    趣味网站、趣味应用
    论文写作的句型
    Python Tricks(二十一)—— 排列组合的计算
    Python Tricks(二十一)—— 排列组合的计算
    辨异 —— 有两人生日在同一天、只有两人生日在同一天
    辨异 —— 有两人生日在同一天、只有两人生日在同一天
    品味电影
    品味电影
    HDU 4414 Finding crosses (DFS + BFS)
  • 原文地址:https://www.cnblogs.com/downey/p/4888803.html
Copyright © 2011-2022 走看看