`
zjf201172653
  • 浏览: 45374 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java项目中memcached的用法

阅读更多

   使用memcached       转载  http://blog.csdn.net/loujinhe/article/details/8491673

       Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过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.     }  

分享到:
评论

相关推荐

    java中memcached基本使用方法

    使用memcache分布式数据系统减轻数据库的压力,使用memcache的版本的是java_memcached-release_2.5.3.jar

    memcached简介及java使用方法

    memcached简介及java使用方法

    Memcached Java Client API详解

    Memcached Java Client API详解.doc

    JAVA上百实例源码以及开源项目源代码

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    spring-mybatis-memcached.zip_Memcached java_annotation_mybatis_m

    因为 simple-spring-memcached 暂时和 MyBatis3 没办法直接整合(MyBatis3 不再需要 DAO 实现类),simple-spring-memcached annotation 在 interface 方法里不起作用。见我提交的 Bug。 ssm3-springcache-mybatis3-...

    memcached1

    然后再取出进行查看,我们可以看到先调用了add,然后再进行get,我们运行一次后,234这个值已经被我们存入了memcached的缓存中的了,我们将main方法中红色的那一行注释掉后,我们再运行还是可以看到get到的value也是...

    Simple-Spring-Memcached

    在JAVA中使用Memcached进行行缓存是比较复杂的。Simple-Spring-Memcachd(SSM)企图通过实现几个基础的使用项来简化Memcached的使用。 该项在java-memcached客户端的基础上使用java5的注解和Sping/AspectJ的AOP,使...

    memcached源码

    (1、)java_memcached-release_1.6为java工程(内有详细的测试方法和用法)。 (2、)memcached-win32-1.4.4-14为memcached目录。 安装: cmd打开命令窗口,转到解压的目录(memcached-win32-1.4.4-14),输入 ...

    memcached-2.4.2.jar memcached-2.4.2.jar

    使用memcached 方法 package com.war.common.util; import com.danga.MemCached.*; import java.util.Date; public class MemCached { protected static MemCachedClient mcc; protected static Logger log; ...

    JAVA上百实例源码以及开源项目

     Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:  可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,...

    memcached的资料

    在windonw下面学习memcached开发,需要使用的包 第一个:memcached服务,需要安装一个windows下的服务, memcached_en32or64.zip 安装方法,自己上网查找 第二个:需要开发memcached的开发需要的包,一共需要使用4...

    MemcachedClient4J:它是 java 的 memcached 客户端

    提供同步和异步两种接口,使用方法非常简单,示例如下: MemcachedClient memcachedClient = new MemcachedClient ( new String []{ " 127.0.0.1:11211 " } , 10 ) ; // sync boolean set1 = memcached...

    Memcached-Java-Client-3.0.2.jar中文-英文对照文档.zip

    # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作...

    java开源包8

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包4

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包101

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包11

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包6

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包9

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

Global site tag (gtag.js) - Google Analytics