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,会出现下面图示:
以上图部分参数介绍:
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
以上内容有些参考至网络,参考网址已经找不到,特此说明。