memcache java使用_windows下安装memcache及java客户端调用

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。

关于Memcached的介绍请参考:Memcached深度分析

下载Windows的Server端

安装Memcache Server(也可以不安装直接启动)

1. 下载memcached的windows稳定版,解压放某个盘下面,比如在c:\memcached

2. 在CMD下输入 "c:\memcached\memcached.exe -d install" 安装.

3. 再输入:"c:\memcached\memcached.exe -d start" 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

如果下载的是二进制的版本,直接运行就可以了,可以加上参数来加以设置。

常用设置:

-p           监听的端口

-l       连接的IP地址, 默认是本机

-d start          启动memcached服务

-d restart        重起memcached服务

-d stop|shutdown  关闭正在运行的memcached服务

-d install        安装memcached服务

-d uninstall      卸载memcached服务

-u      以的身份运行 (仅在以root运行的时候有效)

-m           最大内存使用,单位MB。默认64MB

-M                内存耗尽时返回错误,而不是删除项

-c           最大同时连接数,默认是1024

-f        块大小增长因子,默认是1.25

-n         最小分配空间,key+value+flags默认是48

-h                显示帮助

二、下载java版本的memcache客户端及使用

我已经将java的memcache客户端打包了,可以到这个地址下载:

http://download.csdn.net/detail/cdnight/6897533

下面是关于如何使用这个客户端来添加缓存,修改缓存的程序示例:

(源自网上示例,但是某些地方改了一下免得新版本的客户端出错了)

package EWeb.Base.Tools;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import EWeb.Base.Config.AppConfig;

import com.danga.MemCached.MemCachedClient;

import com.danga.MemCached.SockIOPool;

/**

* 警告:这个类是memcache的客户端,用于帮助存取缓存内容,

* 要使用请先配置好memcache服务器,并且运行该服务器,

* 正如要读写数据库时候需要安装数据库并运行数据库服务。

* */

public class MemCachedManager {

// 创建全局的唯一实例

protected static MemCachedClient mcc = new MemCachedClient();

protected static MemCachedManager memCached = new MemCachedManager();

// 设置与缓存服务器的连接池

static {

// 服务器列表和其权重

/**

*这里是根据配置文件读取memcache服务器的ip地址,不够不用这么麻烦,调试状态可以直接设为:127.0.0.1:11211

*/

String _memcacheServerIP=AppConfig.getMemCachedServerIP();

String[] servers = {_memcacheServerIP};

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()

{

}

/**

* 获取唯一实例.

*/

public static MemCachedManager getInstance()

{

return memCached;

}

/**

* 添加一个指定的值到缓存中.

* @param value

*/

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);

}

/**

* 根据指定的关键字获取对象.

* @return

*/

public Object get(String key)

{

return mcc.get(key);

}

public static void main(String[] args)

{

MemCachedManager cache = MemCachedManager.getInstance();

long startDate=System.currentTimeMillis();

try{

cache.add("testkey","您好吗?");

String str=cache.get("testkey").toString();

System.out.println(str);

System.out.println(cache.get("testkey2"));

}

catch (Exception ed){

ed.printStackTrace();

}

}

}

运行以后出现这个结果:

c21e7e381ab41cb9dcd3580a8bffd95d.png

ok,windows下面的java+memcache调试环境已经整合完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值