`
ChanYi0508
  • 浏览: 1994 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java缓存(MemChachedClient)

阅读更多
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
分享到:
评论

相关推荐

    基于java的开发源码-Java缓存工具 SimpleCache.zip

    基于java的开发源码-Java缓存工具 SimpleCache.zip 基于java的开发源码-Java缓存工具 SimpleCache.zip 基于java的开发源码-Java缓存工具 SimpleCache.zip 基于java的开发源码-Java缓存工具 SimpleCache.zip 基于java...

    基于java的开发源码-Ehcache Java 缓存框架.zip

    基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-...

    Java缓存技术的使用实例

    Java缓存技术是提高应用程序性能的关键工具,尤其是在处理大量数据时。它通过存储频繁访问的数据在内存中,避免了重复的数据库查询,显著提升了响应速度。在这个“Java缓存技术的使用实例”中,我们将深入探讨Java...

    基于java的开发源码-ehcache(Java缓存框架 EhCache).zip

    基于java的开发源码-ehcache(Java缓存框架 EhCache).zip 基于java的开发源码-ehcache(Java缓存框架 EhCache).zip 基于java的开发源码-ehcache(Java缓存框架 EhCache).zip 基于java的开发源码-ehcache(Java缓存框架 ...

    Java缓存技术深入了解

    **Java缓存技术深入了解** Java缓存技术是提高应用程序性能的关键技术之一,它通过存储经常访问的数据,减少了对数据库或其他慢速数据源的依赖,从而加快了数据的获取速度。本篇文章将深入探讨Java中的缓存实现,...

    java缓存类

    Java 缓存类是编程中常见的一种技术,用于提高数据读取速度,减少对数据库或远程服务的依赖。在Java中,有许多库和框架提供了缓存功能,如Ehcache、Guava Cache以及Spring框架中的Cache Abstraction。本文将重点讨论...

    java 缓存插件ehcache 应用实例

    在Java开发中,缓存是一种优化性能的重要技术,它能够减少对数据库的访问频率,提高应用的响应速度。Ehcache是一款广泛使用的开源Java缓存框架,尤其在处理大量数据时,它可以显著提升应用程序的效率。本文将深入...

    JAVA缓存技术深入了解

    Java 缓存技术是优化应用程序性能的关键组成部分,尤其是在处理大量数据或者频繁访问相同资源的应用中。深入理解Java缓存技术可以帮助我们设计出更加高效、响应迅速的系统。在这个主题下,我们将探讨Java缓存的基本...

    JAVA缓存技术_深入了解

    JAVA缓存技术_深入了解,多个缓存技术介绍

    java缓存数据

    在IT行业中,缓存是一种非常重要的技术,尤其是在Java应用程序中,它能够显著提高系统的性能和响应速度。本文将深入探讨“java缓存数据”这一主题,结合提供的标签“源码”和“工具”,我们将从源代码层面和常用工具...

    详解java缓存ppt讲义

    Java缓存技术在企业级开发中扮演着至关重要的角色,主要目的是提高系统性能,减少不必要的计算和I/O操作。本文将深入探讨缓存的概念、作用、类型以及在Java环境下的应用。 缓存,简单来说,就是高速缓冲存储器,它...

    java map 实现缓存技术

    本文将深入探讨如何使用Java Map实现缓存技术,以及其中的关键知识点。 首先,让我们理解什么是缓存。缓存是一种存储技术,用于暂时保存经常访问的数据,以便于快速检索。在Java中,我们通常使用HashMap、...

    java缓存工具 SimpleCache_java_缓存_

    Java 缓存工具 SimpleCache 是一个用于在 Java 应用程序中实现高效数据存储和检索的框架。在高并发和大数据量的场景下,缓存是提高系统性能的关键技术之一。SimpleCache 提供了一种简洁的方式来管理短期数据,避免了...

    java缓存代码,tomcat JVM配置

    本文将深入探讨“java缓存代码,tomcat JVM配置”这一主题,包括Java缓存的实现方法以及如何对Tomcat服务器进行JVM配置和连接池设定,以提升系统效率。 首先,我们来看Java缓存代码。在Java中,缓存是一种常见的...

    java本地缓存ConcurrentHashMap

    java本地缓存ConcurrentHashMap

    java 通过文件实现缓存

    java实现缓存可以通过读取本地文件的方式实现,改代码就是通过读取本地文件实现缓存的简单例子

    java 缓存 cache lru 实例

    java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例

    谷歌推荐磁盘缓存 DiskLruCache.java 缓存类

    谷歌推荐磁盘缓存 DiskLruCache.java 缓存类 主要用于安卓图片磁盘缓存,放入项目中修改包名直接调用即可.

Global site tag (gtag.js) - Google Analytics