`
猪↘專屬|华
  • 浏览: 163995 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java缓存技术memcached实例

 
阅读更多

1 下载memcached-1.2.1-win32.zip  并且解压.

2 新建web project项目 名字自己取,然后导入必要的包,alisoft-xplatform-asf-cache-2.5.1.jar,commons-logging-1.0.3.jar,log4j-1.2.13.jar

3 新建类 user.java

package bean;

import java.io.Serializable;

public class User implements Serializable{
 
    /**
     * 序列号
     */
    private static final long serialVersionUID = -3896605600471191953L;
    private int uid;
    private String uname;
    private String upass;
   
    public int getUid() {
       return uid;
    }
    public void setUid(int uid) {
       this.uid = uid;
    }
    public String getUname() {
       return uname;
    }
    public void setUname(String uname) {
       this.uname = uname;
    }
    public String getUpass() {
       return upass;
    }
    public void setUpass(String upass) {
       this.upass = upass;
    }


}

4 新建 JdbcConnector.java

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcConnector {
  // 定义数据库连接常量
    private final static String DRIVER = "com.mysql.jdbc.Driver";
    private final static String URL = "jdbc:mysql://192.168.1.13:3306/test";
    private final static String DBNAME = "root";
    private final static String DBPASS = "123456";
   
    /**
     * 得到数据库连接
     * @return
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public Connection getConn()throws ClassNotFoundException,SQLException {
       // 加载驱动
       Class.forName(DRIVER);
       // 通过DriverManager对象得到连接
       Connection conn = DriverManager.getConnection(URL,DBNAME,DBPASS);
       // 返回数据库连接
       return conn;
    }
}

5 新建 UserDao.java

package util;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import bean.User;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;

public class UserDao extends JdbcConnector {
    // 定义全局变量
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
   
    /**
     * 根据Id查询用户
     * @param uid
     * @return
     */
    public User getUserById(int uid) {
       // 创建User对象
       User user = null;
       // 创建SQL语句
       String sql = "select * from user where uid=?";
      
       try {
           // 获得数据库连接
           conn = (Connection) this.getConn();
           // 通过Connection对象创建PrepareStatement对象
           pstmt = (PreparedStatement) conn.prepareStatement(sql);
           // 设置SQL语句的参数
           pstmt.setInt(2, uid);
           // 执行查询,将查询结果赋给ResultSet对象
           rs = (ResultSet) pstmt.executeQuery();
           // 遍历指针
           while (rs.next())
           {
              user = new User();
              user.setUid(rs.getInt("uid"));
              user.setUname(rs.getString("uname"));
              user.setUpass(rs.getString("upass"));
           }
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       } catch (SQLException e) {
           e.printStackTrace();
       }
       return user;
    }
   
    /**
     * 查询所有用户
     * @return
     */
    @SuppressWarnings("unchecked")
    public List getUserList() {
       // 创建ArrayList对象
       List userList = new ArrayList();
      
       // 创建SQL对象
       String sql = "select * from user";
      
       try {
           conn = (Connection) this.getConn();
           pstmt = (PreparedStatement) conn.prepareStatement(sql);
           rs = (ResultSet) pstmt.executeQuery();
           while (rs.next())
           {
              User user = new User();
              user.setUid(rs.getInt("uid"));
              user.setUname(rs.getString("uname"));
              user.setUpass(rs.getString("upass"));
             
              userList.add(user);
           }
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
       } catch (SQLException e) {
           e.printStackTrace();
       }
       return userList;
    }

}

6 新建 MemcachedManager.java

package memcachedTest;

import java.util.Date;
import java.util.List;

import util.UserDao;
import bean.User;

import com.alisoft.xplatform.asf.cache.memcached.client.MemCachedClient;
import com.alisoft.xplatform.asf.cache.memcached.client.SockIOPool;

public class MemcachedManager {
 
   // 创建MemCachedClient全局对象
    private static MemCachedClient mcc = new MemCachedClient();
   
    static {
       // 创建服务器列表及其权重
       String[] servers = {"127.0.0.1:11211"};
       Integer[] weights = {3};
      
       // 创建Socket连接池对象
       SockIOPool pool = SockIOPool.getInstance();
      
       // 设置服务器信息
       pool.setServers(servers);
       pool.setWeights(weights);
       pool.setFailover(true);
      
       // 设置初始连接数、最小和最大连接数以及最大处理时间
       pool.setInitConn(5);
       pool.setMinConn(5);
       pool.setMaxConn(250);
       pool.setMaxIdle(1000*60*60*6);
      
       // 设置主线程睡眠时间
       pool.setMaintSleep(30);
      
       // 设置TCP参数、连接超时等
       pool.setNagle(false);
       pool.setSocketTO(3000);
       pool.setSocketConnectTO(0);
       pool.setAliveCheck(true);
      
       // 初始化连接池
       pool.initialize();
      
       // 压缩设置,超过指定大小(单位为K)的数据都会被压缩
       mcc.setCompressEnable(true);
       mcc.setCompressThreshold(64 * 1024);
    }
   
    /**
     * 无参构造
     */
    protected MemcachedManager (){
      
    }
   
    // 受保护的对象
    protected static MemcachedManager instance = new MemcachedManager();
   
    /**
     * 为受保护的对象提供一个公共的访问方法
     */
    public static MemcachedManager getInstance () {
       return instance;
    }
   
    /**
     * 添加对象到缓存中,构成方法重载
     * @param key
     * @param value
     * @return
     */
    public boolean add(String key,Object value) {
       return mcc.add(key, value);
    }
    public boolean add (String key,Object value,Date expiry) {
       return mcc.add(key, value,expiry);
    }
   
    public boolean replace (String key,Object value) {
       return mcc.replace(key, value);
    }
   
    public boolean replace (String key,Object value,Date expiry)
    {
       return mcc.replace(key, value, expiry);
    }
   
    /**
     * 根据指定的关键字获取对象
     */
    public Object get(String key) {
       return mcc.get(key);
    }
   
   
   
    /**
     * 利用MemCached测试将单个对象存入缓存,并从缓存中取出
     */
//  public static void main(String[] args) {
//      // 得到MemcachedManager实例
//     MemcachedManager cache = MemcachedManager.getInstance();
//    
//     // 创建UserDao对象
//     UserDao userDao = new UserDao();
//     // 查询单个User对象
//     User user = userDao.getUserById(4);
//    
//     // 将User对象添加到缓存中
//     cache.add("user", user.getUname());
//    
//     // 将User对象从缓存中取出来
//     String uname = (String)cache.get("user");
//    
//     System.out.println("从缓存中取出的对象为:" + uname);
//  }
   
   
   
    /**
     * 利用MemCached对象将集合存入缓存,并从缓存中取出
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {
       // 得到MemcachedManager实例
       MemcachedManager cache = MemcachedManager.getInstance();
      
       // 创建UserDao对象
       UserDao userDao = new UserDao();
       // 得到集合对象
       List userList = userDao.getUserList();
      
       // 创建User对象
       User user = null;
       for (int i=0; i<userList.size(); i++)
       {
           // 循环遍历集合对象
           user = (User)userList.get(i);
           user.getUid();
           user.getUname();
           user.getUpass();
          
           // 将集合对象存入缓存中
           cache.add("userList" + i,user.getUname());
          
           // 将集合从缓存中取出
           String uname = (String)cache.get("userList"+i);
          
           System.out.println("从缓存中取得的集合为:" + uname);
       }
    }


}

 

 

结果从控制台输出:

从缓存中取得的集合为:uname
从缓存中取得的集合为:uname1
从缓存中取得的集合为:uname2
从缓存中取得的集合为:uname3

 

 

 

 

2
0
分享到:
评论
1 楼 lshxy320 2014-11-03  
楼主,请问mcc和pool怎么联系起来的?没有Memcached.xml配置这两者的关系也行吗???

相关推荐

    memcached缓存使用演示

    **Memcached缓存系统详解与应用实践** Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。它通过将数据存储在内存中,使得数据的读取速度大大提高,...

    java使用memcached的实例

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

    缓存服务器memcached代码及使用文档

    - **数据分片**:根据业务需求,可以将数据分散到多个Memcached实例上,以提高并发性能和整体容量。 - **缓存一致性**:在分布式环境中,需要考虑缓存与数据库的一致性问题,如使用缓存失效策略或更新时的CAS...

    java使用Memcached简单教程

    2. **集群部署**:使用多个Memcached实例构建集群,通过负载均衡来分发请求,提高处理能力。 3. **使用更先进的解决方案**:随着技术的发展,一些新的缓存方案,如Redis或作者新推出的Groupcache(使用Go语言编写)...

    memcached 的简单java实例

    以下是一个简单的Java实例,演示如何使用Spymemcached连接到Memcached服务器并执行基本操作: 1. **添加依赖** 首先,你需要在项目中添加Spymemcached的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下...

    java 缓存系统实战(安装和实例代码)

    Java 缓存系统实战主要涉及的是使用 Memcached 这一开源缓存框架,它是一个高性能、分布式的内存对象缓存系统。Memcached 提供了 key-value ...通过了解其原理和实践操作,开发者可以更好地利用缓存技术优化应用程序。

    memcached java简单实例

    **标题:“memcached java简单实例”** 在Java开发中,我们常常会遇到缓存的需求,以提高应用程序的性能。Memcached是一款高效的分布式内存对象缓存系统,它能够将数据存储在内存中,从而减少对数据库的访问。这篇...

    java环境下Memcached应用详解

    在Java环境下,Memcached作为内存缓存技术,通过高效的键值对存储和分布式特性,能够显著提升Web应用的性能。开发者可以选择适合的客户端库进行集成,并掌握其核心概念、操作方法以及最佳实践,从而在实际项目中发挥...

    JAVA-memcached简单例子

    Java与Memcached的结合使用是分布式缓存领域中常见的技术实践。Memcached是一款高性能、分布式内存对象缓存系统,它可以将数据存储在内存中,从而加快读取速度,减轻数据库的负担。Java作为广泛使用的编程语言,有...

    memcached缓存技术代码版

    这个“memcached缓存技术代码版”可能包含了使用Java语言在Eclipse开发环境中实现Memcached缓存功能的示例代码。在这里,我们将深入探讨Memcached的基本概念、工作原理以及如何在Java项目中集成和使用它。 1. **...

    Memcached缓存技术资料源码

    **Memcached缓存技术详解** Memcached是一款高性能的分布式内存对象缓存系统,它被广泛应用于Web应用中,用于缓解数据库的压力,提高数据访问速度。本文将深入探讨Memcached的基本概念、工作原理、安装配置、使用...

    oscache缓存技术入门实例

    osCache虽然功能强大,但在Java缓存领域,还有其他如EHCache、Memcached和Redis等解决方案。每种缓存都有其特点和适用场景,比如EHCache同样适用于本地缓存,而Memcached和Redis更适合分布式缓存环境。 总结,...

    java缓存文档

    Java缓存技术是提高应用程序性能的关键工具,尤其是在处理大量数据时。它通过将频繁访问的数据存储在内存中,避免了每次请求时从慢速的硬盘或远程服务获取数据,从而显著提高了系统的响应速度。本文档主要关注Java...

    memcached缓存

    **memcached缓存技术详解** `memcached` 是一个高性能的分布式内存对象缓存系统,它广泛应用于Web应用中以减轻数据库的负载。通过将数据存储在内存中,memcached可以快速提供数据,从而提高应用的响应速度。本文将...

    数据平台缓存技术方案Memcached-Redis[汇编].pdf

    数据平台缓存技术方案Memcached-Redis 汇编 Memcached 是高性能的分布式内存缓存服务器,协议简单,通过缓存数据库的查询结果,减少数据库访问次数,提高动态 Web 应用的速度和扩展性。Memcached 支持多种语言,...

    Memcached分布式缓存

    - **memcached不互相通信的分布式**:每个memcached实例都是独立的,它们之间不共享数据,也不互相通信。这使得系统具有良好的扩展性和容错能力。 **1.3 安装memcached** - **memcached的安装**:通常通过包管理器...

    java缓存_源代码

    Java缓存技术是提高应用程序性能的关键工具,尤其是在处理大量数据时。在给定的资源中,我们可以看到四个项目源代码,分别与缓存相关的技术有关,可能是为了演示或实现不同的缓存策略。此外,还有一个"java缓存_...

    JAVA缓存概念体系及应用

    该压缩包中有一个WORD和一个PPT,WORD中介绍了通过单实例和简单LRU算法实现缓存。PPT中介绍了缓存体系,JVM内存模型,JCONSOLE监控工具的使用,Oscache缓存架构 Ehcache缓存架构 Memcached缓存架构 JiveCache缓存架构...

    memcached java客户端驱动包

    使用Java Memcached驱动包的基本步骤通常包括:导入`mem-java.jar`库,创建Memcached客户端实例,配置服务器列表,然后调用相应接口进行数据操作。同时,可以结合`mem-doc`中的文档来获取详细的使用指南和API说明。 ...

    向memcached中保存Java实体需注意的问题 Demo

    在分布式环境中,多个Memcached实例需要保持数据一致性。常见的解决方案有:一致性哈希、轮询、随机选择等。 **最佳实践** 1. **对象瘦身**:尽量减少对象的大小,避免存储不必要的数据。 2. **缓存更新策略**:与...

Global site tag (gtag.js) - Google Analytics