mysql memcached java_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

{

// 循环遍历集合对象

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编译安装mysql5.6.36_MySQL5.6.36编译安装

一、MySQL5.6.36安装前准备(1)克隆一个模板机器(使用centos6),克隆完做快照(2)IP 10.0.0.52 主机名db02(3)iptables selinux(4)下载好5.6.36(5)安装依赖包yum install -y ncurses-devel libaio-devel cmake(6)安装cmakeyum install cmake –y(7)创建用户useradd -s …

mysql mysqld.sock_MySQL笔记-最简单的方法来解决找不到mysqld.sock文件的问题

首先,环境:ubuntu 14.04,采用apt-get的方式安装的,手动安装可能路径设置稍有区别。1、安装MySQL后,用命令行首次启动时发现找不到Mysqld.sock文件,提示:ERROR 2002 (HY000): Cant connect to local MySQL server throu…

plan explorer mysql_plan explorer支持oracle吗

展开全部1.SQL语句的执行62616964757a686964616fe58685e5aeb931333361326365计划使用EXPLAIN PLAN语句来确定Oracle数据库下指定SQL语句的执行计划,这个语句插入每一步执行计划的行描述到指定表中。你也可使用EXPLAIN PLAN语句作为SQL跟踪工具的一部分。EXPLAIN PLA…

python 列表转图结构_Python读取网络(图)边列表数据进而转化为邻接矩阵

import networkx as nxG nx.Graph()path ./edge_list.txtedge_list []node_set set() #集合的特性就是元素不会重复,互异的with open(path, r) as f:for line in f:cols line.strip().split( )y1int(cols[0])y2int(cols[1])node_set.add(y1)node_set.add(y2)ed…

r语言读写word_R语言:在word中插入ggplot

最近CRAN上新了一个叫eoffice的package,并且不时被各路大佬提起。这个包的功能刚好也符合我最近的需求,这次带各位先来试试水。包的官方介绍:1. Introduction​cran.r-project.org这次主要试试在word中用该包插入ggplot。既然要试&#xff0c…

hamburger组件_一个侧边栏导航组件实现思路

翻译:布兰作者:Adam Argyle来源:https://web.dev/building-a-sidenav-component/在这篇文章中,我想和大家分享我是如何为 web 原型化一个 Sidenav 组件的,这个组件是响应式的,有状态的,支持键盘…

centos php mysql 5.6 安装_centos7安装nginx、php5.5、mysql5.6

一、nginx1、安装yum install nginx2、启动systemctl start nginx关闭:systemctl stop nginx 重启:systemctl restart nginx 检查状态:systemctl status nginx3、测试浏览器直接访问http://ip,应该会看到以下界面:4、支持php打开/…

myeclipse怎么导入mysql驱动_myeclipse sql导入数据库驱动包

如何配置strutshibernate,基本使用方法不少童鞋在自学SSH框架的时候,难在创建第一个项目,如何搭建好这些框架,很多书上只是给出了代码但是没有教如何使用,所以在本次博客中将会图文结合来说一下如何使用struts结合hibe…

mysql 报表统计sql使用实例_mysql 案例~mysql元数据的sql统计

一 简介:今天我们来收集下提取元数据的sql二 前沿: information_schema 引擎 memory 元数据收集表三 sql语句:1#没有使用索引的表统计SELECT t.TABLE_SCHEMA,t.TABLE_NAME,t.TABLE_ROWS FROM information_schema.tables AS t LEFT JOIN (SELECT DISTINCT table_schema, table_…

创建或更改表 tablename 失败_mysql 创建用户

一. 创建用户命令:CREATE USER usernamehost IDENTIFIED BY password;说明:username:你将创建的用户名host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆&#…

linux忘记mysql登录用户密码_linux中忘记mysql用户root密码解决方案

1.vim /etc/my.cnf[mysqld]skip-grant-tables ##追加此行,跳过权限表,2.重启mysqlsystemctl restart mysqld3.mysql 登陆mysqlmysql> use mysql;mysql> UPDATE user SET Password password ( ‘zha123456‘ ) WHERE User ‘root‘ ;mysql> fl…

sql2000 mysql 兼容_SQL Server2000如何恢复数据库

以里诺仓库管理软件(SQL网络版)为例,如果您因电脑操作系统重装,需要把以前备份的数据库恢复过来,请您按如下操作来。首先,您需要安装MS SQL Server2000。1. 以Windowns XP为例,SQL Server个人版安装完成后,…

suse下删除mysql_每日MySQL之005:SUSE linux下卸載MySQL

卸載這里的卸載,對應於之前的安裝停止MySQL服務:db2a:~ #service mysql stop找到所有的MySQL包:db2a:~ #rpm -qa | grep -i mysqlmysql-community-server-5.7.19-1.sles11mysql-community-common-5.7.19-1.sles11libqt4-sql-mysql-4.6.3-5.34…

java中br.readline_Java:java中BufferedReader的read()及readLine()方法的使用心得

BufferedReader的readLine()方法是阻塞式的, 如果到达流末尾, 就返回null, 但如果client的socket末经关闭就销毁, 则会产生IO异常. 正常的方法就是使用socket.close()关闭不需要的socket.从一个有若干行的文件中依次读取各行,处理后输出,如果用以下方法&…

java dfs_Java数据结构与算法 深搜(DFS)的简单使用(一)之排列组合

今天,我们来简单介绍一下深度优先搜索(DFS)的概念和使用。在百度词条中,对深搜的解释是这样的。百度词条中的解释由此,我们可知,深搜是广泛运用到 图 中的搜索方法之一。用深度优先搜索遍历图的基本思路是:(1)访问顶点…

java数组元素是类_Java数组及其常用类

本文由疯狂软件教育中心整理,更多Java等高新技术,疯狂软件期待与你交流。一、JAVA中的数组(1)数组的定义:是有相同类型的、用一个标识符名称封装到一起的一个对象序列或基本数据类型数据序列。数组是一种最简单的复合数据类型。数组可以是一维…

java 数组 equals_java中用equals比较两个内容相同的字符数组

********************************************你在数组上调用函数equals,比较的是c和ch的地址改成if(Arrays.equals(ch,c));就可以比较c和ch的内容了********************************************java.sun.com上说,The equals method for class Object implements…

java ssh pdf_JavaSSH框架技术规范.pdf

航安项目(三期)框架技术规范日期 版本 简述 作者2011年3月1 日 V1.0 指定本系统的技术规范2011年9月25 日 V2.0 指定本系统的技术规范框架技术规范航安项目框架技术规范 目录1、规范配置说明12、系统三层架构规范配置说明12.1 Dao22.2 Entity42.3 Service43、Spring 规范配置说…

java 线程执行结束_Java_如何等待子线程执行结束

本程序的数据有可能是如下:main thread work startsub thread start working.main thread work done.now waiting sub thread done.sub thread stop working.now all done.忽略标号, 当然输出也有可能是1和2调换位置了. 这个我们是无法控制的. 我们看下线程的join操作, 究竟干了…

mysql将时间轴转化为时间_MySQL日期计算及格式转换有关问题

mysql日期计算及格式转换问题2012-06-09 21:08 MySQL日期计算及格式转换问题做开发的时候经常会碰到以下几个问题使用mysql的内置函数将时间轴转成对应的日期方法一:使用from_unixtime(unix_timestamp)函数即可实现,如:SELECT FROM_UNIXTIME(…