`
zjf201172653
  • 浏览: 46592 次
  • 性别: 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服务器

    接下来,我们将深入探讨如何在Java环境中配置和使用Memcached。 首先,要连接到Memcached服务器,你需要一个Java客户端库。常见的有spymemcached和XMemcached。这里我们以spymemcached为例,因为它是社区中广泛使用...

    java使用Memcached简单教程

    为了在Java项目中使用Memcached,我们需要引入一个客户端库。在这里,我们选择使用SpyMemcached作为客户端。首先,在Maven项目的`pom.xml`文件中添加以下依赖: ```xml &lt;groupId&gt;net.spy&lt;/groupId&gt; &lt;artifactId&gt;...

    java使用memcached的实例

    本文将详细解析如何在Java项目中使用Memcached,包括其配置方法以及一个具体的示例代码,旨在帮助开发者深入理解并掌握这一技术。 ### 一、Memcached简介 Memcached是一种开源的高性能内存键值存储系统,主要用于...

    memcached安装及java应用使用memcached

    “memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...

    Java环境下Memcached应用详解.docx

    在Java开发中,使用Memcached通常需要通过Java客户端库来与服务器端通信。这些客户端库提供了简单的API接口,使得开发者能够方便地进行缓存操作。例如,Java中常用的Memcached客户端有spymemcached、xmemcached等,...

    java连接memcached示例代码

    下面我们将详细探讨如何在Java中使用Memcached以及相关知识点。 首先,我们需要引入一个Java库来与Memcached通信,例如spymemcached或xmemcached。这两个库提供了Java客户端,方便我们进行API调用。这里以...

    Memcached java的使用实例

    以上就是Memcached在Java环境中的基本使用方法。为了实现更高效、安全的缓存策略,你可以进一步研究Memcached的特性,如CAS(Compare and Swap)操作、持久化、分布式哈希等。同时,了解如何在大型分布式系统中优化...

    阿里软件java版memcached安装文件和demo项目

    同时,提供的内容包括了Memcached的安装文件、相关的jar包、以及使用文档(doc文件),这为开发者提供了一站式的解决方案,能够快速在Java项目中集成并使用Memcached。 具体知识点如下: 1. **Memcached基础**:...

    java使用memcached demo

    Memcached支持设置过期时间,如上面的`set`方法中的第二个参数。过期后的数据会自动从缓存中移除。 7. **高级功能** - 并行操作:可以批量操作多个键,提高性能。 - 哈希映射:对于复杂的数据结构,可以使用哈希...

    java_memcached-release_1.6.zip

    为了在Java项目中使用Java Memcached客户端,开发者需要按照以下步骤操作: 1. 解压下载的zip文件,找到并添加jar包到项目类路径。 2. 引入必要的库依赖,例如net.spy.memcached包。 3. 创建Memcached客户端实例,...

    java+memcached所需文件

    接下来,"使用方法.doc"是一个详细指南,里面可能包含如何在Java项目中集成和使用这些文件的步骤。通常,这份文档会指导你如何配置Java Memcached客户端,如何连接到运行的Memcached服务,以及如何进行基本的缓存...

    oracle掉用memcached,得用oracle调用java,java调用memcached

    3. **Java Memcached客户端**:`java_memcached-release_2.6.6`是Java的Memcached客户端库,包含了与Memcached服务器交互所需的方法。开发人员会使用这个库编写Java代码,实现设置和获取缓存值的接口。 4. **设置和...

    java中memcached基本使用方法

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

    JAVA-memcached简单例子

    - 在Java项目中,我们通常使用第三方库如spymemcached或xmemcached来与Memcached通信。这两个库提供了简单的API,使得与Memcached的交互变得容易。在这个例子中,我们将使用spymemcached,因为它相对轻量级且易于...

    java_memcached-release_2.6.3.zip

    在Java Memcached客户端中,它用于管理连接池,即高效地重复使用已经创建的对象,而不是每次需要时都创建新的对象,这可以显著提高性能并减少系统资源的消耗。 2. **java_memcached-release_2.6.3.jar**:这是Java ...

    memcached在JAVA项目中的应用.docx

    【描述】:本文主要探讨了Memcached作为缓存系统在Java项目中的使用,包括其在缓解数据库压力、分布式应用以及安全性方面的策略。 【标签】:memcached,java 【正文】: Memcached是一款高性能的分布式内存对象...

    java_memcached-release_2.6.6.rar

    这个“java_memcached-release_2.6.6.rar”压缩包文件包含了用于与Memcached服务器通信的Java库,使得Java开发者能够便捷地集成Memcached到他们的应用中。 Memcached是一个分布式内存对象缓存系统,最初由Danga ...

    java_memcached-release_1.3.2的演示工程(JDK1.4)

    Java Memcached是一个基于Java语言的Memcached客户端库,它允许Java开发者轻松地与...通过深入研究这个项目,开发者可以更好地了解Java Memcached库的用法,并将其应用到自己的项目中,提升系统的缓存能力和响应速度。

    java_memcached-release_2.6.6.jar及其依赖包

    Java Memcached是一个基于Java的Memcached客户端库,用于在Java应用程序中与Memcached缓存系统进行交互。在标题和描述中提到的`...开发者需要理解如何配置和使用这些组件,以便将Memcached的优势融入到他们的项目中。

    memcached for java client 例子

    描述中提到"关于memcache 使用的 客户端是memcached client for java 的 JAVA工程",这意味着这个压缩包可能包含了一个Java项目,该项目专门设计用来连接并操作memcached服务器。Java客户端库允许开发人员在Java应用...

Global site tag (gtag.js) - Google Analytics