mysql memcached java_java缓存技术memcached实例
1 下載memcached-1.2.1-win32.zip? 并且解壓.
2 新建web project項(xiàng)目 名字自己取,然后導(dǎo)入必要的包,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{
/**
* 序列號(hào)
*/
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 {
// 定義數(shù)據(jù)庫(kù)連接常量
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";
/**
* 得到數(shù)據(jù)庫(kù)連接
* @return
* @throws ClassNotFoundException
* @throws SQLException
*/
public Connection getConn()throws ClassNotFoundException,SQLException {
// 加載驅(qū)動(dòng)
Class.forName(DRIVER);
// 通過(guò)DriverManager對(duì)象得到連接
Connection conn = DriverManager.getConnection(URL,DBNAME,DBPASS);
// 返回?cái)?shù)據(jù)庫(kù)連接
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;
/**
* 根據(jù)Id查詢用戶
* @param uid
* @return
*/
public User getUserById(int uid) {
// 創(chuàng)建User對(duì)象
User user = null;
// 創(chuàng)建SQL語(yǔ)句
String sql = "select * from user where uid=?";
try {
// 獲得數(shù)據(jù)庫(kù)連接
conn = (Connection) this.getConn();
// 通過(guò)Connection對(duì)象創(chuàng)建PrepareStatement對(duì)象
pstmt = (PreparedStatement) conn.prepareStatement(sql);
// 設(shè)置SQL語(yǔ)句的參數(shù)
pstmt.setInt(2, uid);
// 執(zhí)行查詢,將查詢結(jié)果賦給ResultSet對(duì)象
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() {
// 創(chuàng)建ArrayList對(duì)象
List userList = new ArrayList();
// 創(chuàng)建SQL對(duì)象
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 {
// 創(chuàng)建MemCachedClient全局對(duì)象
private static MemCachedClient mcc = new MemCachedClient();
static {
// 創(chuàng)建服務(wù)器列表及其權(quán)重
String[] servers = {"127.0.0.1:11211"};
Integer[] weights = {3};
// 創(chuàng)建Socket連接池對(duì)象
SockIOPool pool = SockIOPool.getInstance();
// 設(shè)置服務(wù)器信息
pool.setServers(servers);
pool.setWeights(weights);
pool.setFailover(true);
// 設(shè)置初始連接數(shù)、最小和最大連接數(shù)以及最大處理時(shí)間
pool.setInitConn(5);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaxIdle(1000*60*60*6);
// 設(shè)置主線程睡眠時(shí)間
pool.setMaintSleep(30);
// 設(shè)置TCP參數(shù)、連接超時(shí)等
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);
pool.setAliveCheck(true);
// 初始化連接池
pool.initialize();
// 壓縮設(shè)置,超過(guò)指定大小(單位為K)的數(shù)據(jù)都會(huì)被壓縮
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
/**
* 無(wú)參構(gòu)造
*/
protected MemcachedManager (){
}
// 受保護(hù)的對(duì)象
protected static MemcachedManager instance = new MemcachedManager();
/**
* 為受保護(hù)的對(duì)象提供一個(gè)公共的訪問(wèn)方法
*/
public static MemcachedManager getInstance () {
return instance;
}
/**
* 添加對(duì)象到緩存中,構(gòu)成方法重載
* @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);
}
/**
* 根據(jù)指定的關(guān)鍵字獲取對(duì)象
*/
public Object get(String key) {
return mcc.get(key);
}
/**
* 利用MemCached測(cè)試將單個(gè)對(duì)象存入緩存,并從緩存中取出
*/
//? public static void main(String[] args) {
//????? // 得到MemcachedManager實(shí)例
//???? MemcachedManager cache = MemcachedManager.getInstance();
//
//???? // 創(chuàng)建UserDao對(duì)象
//???? UserDao userDao = new UserDao();
//???? // 查詢單個(gè)User對(duì)象
//???? User user = userDao.getUserById(4);
//
//???? // 將User對(duì)象添加到緩存中
//???? cache.add("user", user.getUname());
//
//???? // 將User對(duì)象從緩存中取出來(lái)
//???? String uname = (String)cache.get("user");
//
//???? System.out.println("從緩存中取出的對(duì)象為:" + uname);
//? }
/**
* 利用MemCached對(duì)象將集合存入緩存,并從緩存中取出
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
// 得到MemcachedManager實(shí)例
MemcachedManager cache = MemcachedManager.getInstance();
// 創(chuàng)建UserDao對(duì)象
UserDao userDao = new UserDao();
// 得到集合對(duì)象
List userList = userDao.getUserList();
// 創(chuàng)建User對(duì)象
User user = null;
for (int i=0; i
{
// 循環(huán)遍歷集合對(duì)象
user = (User)userList.get(i);
user.getUid();
user.getUname();
user.getUpass();
// 將集合對(duì)象存入緩存中
cache.add("userList" + i,user.getUname());
// 將集合從緩存中取出
String uname = (String)cache.get("userList"+i);
System.out.println("從緩存中取得的集合為:" + uname);
}
}
}
結(jié)果從控制臺(tái)輸出:
從緩存中取得的集合為:uname
從緩存中取得的集合為:uname1
從緩存中取得的集合為:uname2
從緩存中取得的集合為:uname3
總結(jié)
以上是生活随笔為你收集整理的mysql memcached java_java缓存技术memcached实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: wdsafedown.exe是什么文件(
- 下一篇: mysql将时间轴转化为时间_MySQL