:D :D :D :D 下载Memcached for windows服务器,安装好以后会在服务中出现
默认端口是11211
要想在windows中使用memcached,必须先下载memcached for win32安装。
下载地址:http://jehiah.cz/projects/memcached-win32/
解压后只要在命令窗口中输入下面命令c:memcachedmemcached.exe -d install 就可以把memcached安装为windows服务了。
启动该服务后,memcached服务默认占用的端口是11211,占用的最大内存默认是64M。
在修改这2个配置选项就碰到了一些问题,网上搜索了很多资料,都说使用下面的命令启动服务就可以:
c:memcachedmemcached.exe -p 12345 -m 1024 -d start , -p 表示要修改的端口, -m表示占用的最大内存(单位为M)。
但是无论怎么调用这个命令,发现端口一直还是11211。
打开windows服务控制面板一看,发现memcached.exe 默认安装的服务器启动参数中根本没写-p -m的参数,只有1个 -d runservice参数。
所以不管用什么命令启动服务都是没用的,见下图:
memcached for windows 修改端口和最大内存
于是就想到直接修改windows服务的启动参数,操作如下,打开注册表,找到:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmemcached Server
其中的ImagePath项的值为:"c:memcachedmemcached.exe" -d runservice
改成:"c:memcachedmemcached.exe" -p 12345 -m 128 -d runservice
保存后重新启动memcached服务,然后在命令行中输入netstat -n -a 看看现在端口是不是改啦,^_^。
********************************************传说中的分割线*************************************************************
测试用例
缓存类
package com.util.TestMemCached;
import com.danga.MemCached.*;
public class TestMemcached {
public static final MemCachedClient memCachedClient;
static{
String[] servers = { "192.168.1.100:11211" };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setFailover(true);
pool.setInitConn(10);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaintSleep(30);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(true);
pool.initialize();
/*建立MemcachedClient实例*/
memCachedClient = new MemCachedClient();
}
public static void main(String[] args) {
/*初始化SockIOPool,管理memcached的连接池*/
for (int i = 0; i < 10; i++) {
/*将对象加入到memcached缓存*/
boolean success = memCachedClient.set("" + i, "Hello!");
/*从memcached缓存中按key值取对象*/
String result = (String) memCachedClient.get("" + i);
System.out.println(String.format("set( %d ): %s", i, success));
System.out.println(String.format("get( %d ): %s", i, result));
}
TestClass tc1=new TestClass();
try{
CacheService.cs.put("TestClass1", tc1);
tc1.print();
TestClass tc=(TestClass) CacheService.cs.get("TestClass1");
tc.print();
}catch(Exception ex){
ex.printStackTrace();
}
boolean success = TestMemcached.memCachedClient.set("TestClass1", tc1);
System.out.println("success="+success);
TestClass tc=(TestClass) TestMemcached.memCachedClient.get("TestClass1");
tc.print();
}
}
数据类
package com.util.TestMemCached;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 需要保存到Cache中的类,开始的时候没有增加implements Serializable序列化的时候执行缓存的
* set方法返回false,增加了以后就可以缓存到Memcached服务器了
* @author Administrator
*
*/
public class TestClass implements Serializable {
private int a=123;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public List getL() {
return l;
}
public void setL(List l) {
this.l = l;
}
private String b="123";
private List l;
public TestClass(){
l=new ArrayList();
for(int i=0;i<10;i++){
l.add("保存了第"+i+"个List元素!");
}
}
public void print(){
System.out.println("a="+a);
System.out.println("b="+b);
for(int i=0;i<l.size();i++){
System.out.println("("+i+")="+l.get(i));
}
}
}
默认端口是11211
要想在windows中使用memcached,必须先下载memcached for win32安装。
下载地址:http://jehiah.cz/projects/memcached-win32/
解压后只要在命令窗口中输入下面命令c:memcachedmemcached.exe -d install 就可以把memcached安装为windows服务了。
启动该服务后,memcached服务默认占用的端口是11211,占用的最大内存默认是64M。
在修改这2个配置选项就碰到了一些问题,网上搜索了很多资料,都说使用下面的命令启动服务就可以:
c:memcachedmemcached.exe -p 12345 -m 1024 -d start , -p 表示要修改的端口, -m表示占用的最大内存(单位为M)。
但是无论怎么调用这个命令,发现端口一直还是11211。
打开windows服务控制面板一看,发现memcached.exe 默认安装的服务器启动参数中根本没写-p -m的参数,只有1个 -d runservice参数。
所以不管用什么命令启动服务都是没用的,见下图:
memcached for windows 修改端口和最大内存
于是就想到直接修改windows服务的启动参数,操作如下,打开注册表,找到:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmemcached Server
其中的ImagePath项的值为:"c:memcachedmemcached.exe" -d runservice
改成:"c:memcachedmemcached.exe" -p 12345 -m 128 -d runservice
保存后重新启动memcached服务,然后在命令行中输入netstat -n -a 看看现在端口是不是改啦,^_^。
********************************************传说中的分割线*************************************************************
测试用例
缓存类
package com.util.TestMemCached;
import com.danga.MemCached.*;
public class TestMemcached {
public static final MemCachedClient memCachedClient;
static{
String[] servers = { "192.168.1.100:11211" };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setFailover(true);
pool.setInitConn(10);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaintSleep(30);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(true);
pool.initialize();
/*建立MemcachedClient实例*/
memCachedClient = new MemCachedClient();
}
public static void main(String[] args) {
/*初始化SockIOPool,管理memcached的连接池*/
for (int i = 0; i < 10; i++) {
/*将对象加入到memcached缓存*/
boolean success = memCachedClient.set("" + i, "Hello!");
/*从memcached缓存中按key值取对象*/
String result = (String) memCachedClient.get("" + i);
System.out.println(String.format("set( %d ): %s", i, success));
System.out.println(String.format("get( %d ): %s", i, result));
}
TestClass tc1=new TestClass();
try{
CacheService.cs.put("TestClass1", tc1);
tc1.print();
TestClass tc=(TestClass) CacheService.cs.get("TestClass1");
tc.print();
}catch(Exception ex){
ex.printStackTrace();
}
boolean success = TestMemcached.memCachedClient.set("TestClass1", tc1);
System.out.println("success="+success);
TestClass tc=(TestClass) TestMemcached.memCachedClient.get("TestClass1");
tc.print();
}
}
数据类
package com.util.TestMemCached;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 需要保存到Cache中的类,开始的时候没有增加implements Serializable序列化的时候执行缓存的
* set方法返回false,增加了以后就可以缓存到Memcached服务器了
* @author Administrator
*
*/
public class TestClass implements Serializable {
private int a=123;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public List getL() {
return l;
}
public void setL(List l) {
this.l = l;
}
private String b="123";
private List l;
public TestClass(){
l=new ArrayList();
for(int i=0;i<10;i++){
l.add("保存了第"+i+"个List元素!");
}
}
public void print(){
System.out.println("a="+a);
System.out.println("b="+b);
for(int i=0;i<l.size();i++){
System.out.println("("+i+")="+l.get(i));
}
}
}