读书人

MemCached的运用-小型单点登录

发布时间: 2012-11-15 15:16:13 作者: rapoo

MemCached的使用--小型单点登录

/**
* 使用memcached的缓存实用类.
*
* @author 铁木箱子
*
*/
public class MemCached
{
??? // 创建全局的唯一实例
??? protected static MemCachedClient mcc = new MemCachedClient();
???
??? protected static MemCached memCached = new MemCached();
???
??? // 设置与缓存服务器的连接池
??? static {
??????? // 服务器列表和其权重
??????? String[] servers = {Constants.mencached_url};
??????? Integer[] weights = {3};

??????? // 获取socke连接池的实例对象
??????? SockIOPool pool = SockIOPool.getInstance();

??????? // 设置服务器信息
??????? pool.setServers( servers );
??????? pool.setWeights( weights );

??????? // 设置初始连接数、最小和最大连接数以及最大处理时间
??????? pool.setInitConn( 5 );
??????? pool.setMinConn( 5 );
??????? pool.setMaxConn( 250 );
??????? pool.setMaxIdle( 1000 * 60 * 60 * 3 );

??????? // 设置主线程的睡眠时间
??????? pool.setMaintSleep( 30 );

??????? // 设置TCP的参数,连接超时等
??????? pool.setNagle( false );
??????? pool.setSocketTO( 3000 );
??????? pool.setSocketConnectTO( 0 );

??????? // 初始化连接池
??????? pool.initialize();

??????? // 压缩设置,超过指定大小(单位为K)的数据都会被压缩
??????? //mcc.setCompressEnable( true );
?????? // mcc.setCompressThreshold( 64 * 1024 );
??? }
???
??? /**
???? * 保护型构造方法,不允许实例化!
???? *
???? */
??? protected MemCached()
??? {
???????
??? }
???
??? /**
???? * 获取唯一实例.
???? * @return
???? */
??? public static MemCached getInstance()
??? {
??????? return memCached;
??? }
???
??? /**
???? * 添加一个指定的值到缓存中.
???? * @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);
??? }
???
??? /**
???? * 根据指定的关键字获取对象.
???? * @param key
???? * @return
???? */
??? public Object get(String key)
??? {
??????? return mcc.get(key);
??? }
???
??? public static void main(String[] args)
??? {
??????? MemCached cache = MemCached.getInstance();
??????? MemberSession ms = new MemberSession();
??ms.setFullname("1111");
??
??ms.setId(148L);
??????? cache.add("111", ms);
??????? System.out.print("get value : " + ((MemberSession)cache.get("e284bf22d17f27c2bcb8456b0adb892492729472efa7816049a6ebe1e1cc7dc1583bb06a9b2df3808e42b6dd2c150f64")).getFullname());
??? }
}

?

?

?

?

//传入mencached

?MemCached cache = MemCached.getInstance();

cache.add(sessionReString, ms);

?

//取得mencached信息

MemCached cache = MemCached.getInstance();

ms = (MemberSession)cache.get(sessionKey);

读书人网 >软件架构设计

热点推荐