如何使用memcache减轻数据库压力
Java高级群:224651178使用memcache分布式数据系统减轻数据库的压力,是用memcache的版本的是java_memcached-release_2.5.3.jar
客户端下载地址:https://github.com/gwhalin/Memcached-Java-Client
服务器端下载地址:http://jehiah.cz/projects/memcached-win32/
<wbr></wbr>
代码如下:
package com.wzpmt;import java.util.ArrayList;import java.util.Date;import java.util.List;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;public class MemCachedManager {// 创建全局的唯一实例protected static MemCachedClient mcc = new MemCachedClient();protected static MemCachedManager memCached = new MemCachedManager();// 设置与缓存服务器的连接池static {// 服务器列表和其权重String[] servers = { "127.0.0.1:11211" };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 * 6 );// 设置主线程的睡眠时间pool.setMaintSleep( 30 );// 设置TCP的参数,连接超时等pool.setNagle( false );pool.setSocketTO( 3000 );pool.setSocketConnectTO( 0 );// 初始化连接池pool.initialize();// 压缩设置,超过指定大小(单位为K)的数据都会被压缩mcc.setCompressEnable( true );mcc.setCompressThreshold( 64 * 1024 );}/*** 保护型构造方法,不允许实例化!**/protected MemCachedManager(){}/*** 获取唯一实例.* @return*/public static MemCachedManager 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){MemCachedManager cache = MemCachedManager.getInstance();long startDate=System.currentTimeMillis();for (int i = 0; i < 10000*1000; i++) {cache.add("test"+i , "中国");}long endDate=System.currentTimeMillis();long nowDate=(endDate-startDate)/1000;System.out.println(nowDate);System.out.print( " get value : " + cache.get( "test" ));}}
通过这个简单的例子,可以很快地上手。
Java高级群:224651178
页:
[1]