window下安装memcached,及简单使用

1、下载memcached for window,下载地址:http://www.2cto.com/uploadfile/2012/0522/20120522094758371.rar (或者:http://www.kuaipan.cn/file/id_13620651260979196.htm)

2、将下载下来的压缩包解压到指定目录,我的放在D:\memcached-win32,如图:

3、打开cmd,转到解压目录,运行“memcached.exe -d install”,

常用设置:
-p <num>          监听的端口
-l <ip_addr>      连接的IP地址, 默认是本机
-d start          启动memcached服务
-d restart        重起memcached服务
-d stop|shutdown  关闭正在运行的memcached服务
-d install        安装memcached服务
-d uninstall      卸载memcached服务
-u <username>     以<username>的身份运行 (仅在以root运行的时候有效)
-m <num>          最大内存使用,单位MB。默认64MB
-M                内存耗尽时返回错误,而不是删除项
-c <num>          最大同时连接数,默认是1024
-f <factor>       块大小增长因子,默认是1.25
-n <bytes>        最小分配空间,key+value+flags默认是48
-h                显示帮助

4、打开服务,可以看到memcached已经在上面可,如果没有启动,则手动启动一下。

5、再次打开cmd,运行"telnet 127.0.0.1 11211",会弹出新的窗口,没有任何信息显示,如图:

键入stats,然后回车Enter,会出现下面图示:

以上图部分参数介绍:

以上是服务安装及启动,接下来存取数据
我用的是java 版的,首先需要下载java_memcached-release_2.0.1.jar包,
测试类及一些方法说明,MemcachedManage.java
package com.test.memcached;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemcachedManage {
	
	public static final String KEY = "test";	
	protected static MemCachedClient mcc = new MemCachedClient();
	
	static{
		SockIOPool pool = SockIOPool.getInstance();
		/*
		 * 设置连接池可用的cache服务器列表,server的构成形式是IP:PORT(如:127.0.0.1:11211)
		 */
		pool.setServers(new String[] { "127.0.0.1:11211" });
		/*
		 * 
		 * 设置连接池可用cache服务器的权重,和server数组的位置一一对应
		 * 其实现方法是通过根据每个权重在连接池的bucket中放置同样数目的server
		 * (如下代码所示),因此所有权重的最大公约数应该是1,不然会引起bucket资源的浪费。
		 */
		pool.setWeights(new Integer[] { 1 });
		/*
		 * 设置开始时每个cache服务器的可用连接数
		 */
		pool.setInitConn(5);
		/*
		 * 设置每个服务器最少可用连接数
		 */
		pool.setMinConn(5);
		/*
		 * 设置每个服务器最大可用连接数
		 */
		pool.setMaxConn(250);
		/*
		 * 设置可用连接池的最长等待时间
		 */
		pool.setMaxIdle(1000 * 60 * 60 * 3);
		/*
		 * 
		 * 设置连接池维护线程的睡眠时间 设置为0,维护线程不启动
		 * 维护线程主要通过log输出socket的运行状况,监测连接数目及空闲等待时间等参数以控制连接创建和关闭。
		 */
		pool.setMaintSleep(2000);
		/*
		 * 设置是否使用Nagle算法,因为我们的通讯数据量通常都比较大(相对TCP控制数据)而且要求响应及时,因此该值需要设置为false(默认是true
		 * )
		 */
		pool.setNagle(false);
		pool.setSocketTO(3000);
	    pool.setSocketConnectTO(0);
		/*
		 * 
		 * 设置连接心跳监测开关。
		 * 设为true则每次通信都要进行连接是否有效的监测,造成通信次数倍增,加大网络负载,因此该参数应该在对HA要求比较高的场合设为TRUE
		 * ,默认状态是false。
		 */
		pool.setAliveCheck(true);
		/*
		 * 
		 * 设置连接失败恢复开关
		 * 设置为TRUE,当宕机的服务器启动或中断的网络连接后,这个socket连接还可继续使用,否则将不再使用,默认状态是true,建议保持默认。
		 */
		pool.setFailover(true);
		/*
		 * 
		 * 设置hash算法 alg=0 使用String.hashCode()获得hash
		 * code,该方法依赖JDK,可能和其他客户端不兼容,建议不使用 alg=1 使用original 兼容hash算法,兼容其他客户端
		 * alg=2 使用CRC32兼容hash算法,兼容其他客户端,性能优于original算法 alg=3 使用MD5 hash算法
		 * 采用前三种hash算法的时候,查找cache服务器使用余数方法。采用最后一种hash算法查找cache服务时使用consistent方法。
		 */
		pool.setHashingAlg(3);
		/*
		 * 设置完pool参数后最后调用该方法,启动pool。
		 */
		pool.initialize();
		
		/*
		 * 
		 * 设定是否压缩放入cache中的数据 默认值是ture 如果设定该值为true,需要设定CompressThreshold?
		 */
		mcc.setCompressEnable(true);
		/*
		 * 
		 * 设定需要压缩的cache数据的阈值 默认值是30k
		 */
		mcc.setCompressThreshold(64 * 1024);
		/*
		 * 
		 * 设置cache数据的原始类型是String 默认值是false
		 * 只有在确定cache的数据类型是string的情况下才设为true,这样可以加快处理速度。
		 */
		mcc.setPrimitiveAsString(false);
		/*
		 * 
		 * 当primitiveAsString为true时使用的编码转化格式 默认值是utf-8
		 * 如果确认主要写入数据是中文等非ASCII编码字符,建议采用GBK等更短的编码格式
		 */
		// mcc.setDefaultEncoding("UTF-8");
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {	
		/*
		 * set方法
		 * 
		 * 将数据保存到cache服务器,如果保存成功则返回true 如果cache服务器存在同样的key,则替换之
		 * set有5个重载方法,key和value是必须的参数,还有过期时间,hash码,value是否字符串三个可选参数
		 */
		System.out.println(mcc.set(KEY, "set"));
		System.out.println(mcc.get(KEY));
		/*
		 * add方法
		 * 
		 * 将数据添加到cache服务器,如果保存成功则返回true 如果cache服务器存在同样key,则返回false
		 * add有4个重载方法,key和value是必须的参数,还有过期时间,hash码两个可选参数
		 */
		System.out.println(mcc.add(KEY, "add"));
		System.out.println(mcc.get(KEY));
		/*
		 * 
		 * 将数据替换cache服务器中相同的key,如果保存成功则返回true 如果cache服务器不存在同样key,则返回false
		 * replace有4个重载方法,key和value是必须的参数,还有过期时间,hash码两个可选参数
		 */
		System.out.println(mcc.replace(KEY, "replace"));
		System.out.println(mcc.get(KEY));
		// 建议分析key的规律,如果呈现某种规律有序,则自己构造hash码,提高存储效率

		/**
		 * cache数据读取操作方法
		 * 
		 * 使用get方法从cache服务器获取一个数据 如果写入时是压缩的或序列化的,则get的返回会自动解压缩及反序列化
		 * get方法有3个重载方法,key是必须的参数,hash码和value是否字符串是可选参数
		 * 使用getMulti方法从cache服务器获取一组数据 get方法的数组实现,输入参数keys是一个key数组 返回是一个map
		 * 
		 * 通过cache使用计数器
		 * 
		 * 使用storeCounter方法初始化一个计数器 使用incr方法对计数器增量操作 使用decr对计数器减量操作
		 */
		
		
	}

}

运行结果如下:

com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - Storing with native handler...
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - ++++ memcache cmd (result code): set test 0 0 4
 (STORED)
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - ++++ data successfully stored for key: test
true
set
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - Storing with native handler...
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - ++++ memcache cmd (result code): add test 0 0 4
 (NOT_STORED)
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - ++++ data not stored in cache for key: test
false
set
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - Storing with native handler...
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - ++++ memcache cmd (result code): replace test 0 0 8
 (STORED)
com.danga.MemCached.MemCachedClient Wed May 15 15:51:18 CST 2013 - ++++ data successfully stored for key: test
true
replace

 

以上内容有些参考至网络,参考网址已经找不到,特此说明。

 

 

posted @ 2013-05-15 15:55  邪恶痞  阅读(612)  评论(0编辑  收藏  举报