您的位置:首页 > 数据库 > Memcache

memcached

2015-11-04 23:36 666 查看
一、启动参数

-p <num> 设置TCP端口号(默认不设置为: 11211)

-U <num> UDP监听端口(默认: 11211, 0 时关闭)

-l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)

-d 以daemon方式运行

-u <username> 绑定使用指定用于运行进程<username>

-m <num> 允许最大内存用量,单位M (默认: 64 MB)

-P <file> 将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用

启动例子:/usr/local/memcached/bin/memcached -d -m 512 -u www -l 192.168.20.100 -p 11211 -c 512 -P /usr/local/memcached/memcached.pid

二、常用命令

<command name> <key> <flag> <expire> <bytes>

<data block>

说明:

command name:如,set/add/replace

key:缓存的key

flag:客户机使用它存储关于键值对的额外信息

expire:缓存过期时间 单位为秒 0 表示永远存储

bytes:缓存值的字节数

data block:数据块

例子:

首先telnet 127.0.0.1 11211 连上memcached

set myKey 0 0 6

myValu

STORED

get myKey

VALUE myKey 0 5

myValu

STORED

delete myKey

DELETED

三、java使用memcached

1.

Socket socket = null;
OutputStreamWriter outputStreamWriter = null;
BufferedReader bufferedReader = null;
try {
socket = new Socket("127.0.0.1", 11211);
outputStreamWriter = new OutputStreamWriter(socket.getOutputStream());

String command = "get firstKey\r\n";
/*String command = "set firstKey 0 0 6\r\n";
outputStreamWriter.write(command);
command = "second\r\n";*/
//command = "delete firstKey\r\n";
outputStreamWriter.write(command);
outputStreamWriter.flush();

bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while((line = bufferedReader.readLine()) != null){
sb.append(line).append("\r\n");
if(line.equals("END")) break;
if(line.equals("STORED")) break;
if(line.equals("NOT_STORED")) break;
if(line.equals("DELETED")) break;
if(line.equals("EXISTS")) break;
if(line.equals("ERROR")) break;
}

System.out.println(sb.toString());
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(outputStreamWriter != null){
outputStreamWriter.close();
}
if(bufferedReader != null){
bufferedReader.close();
}
if(socket != null && socket.isConnected()){
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}


2、使用java连接memcached的客户端

需要jar包:

commons-pool-1.6.jar

java_memcached-release_2.6.6.jar

slf4j-api-1.6.1.jar

slf4j-simple-1.6.1.jar

public class MemCachedServer {

private static MemCachedClient memCachedClient;

private static SockIOPool sockIOPool;

private static MemCachedServer instance = new MemCachedServer();

private MemCachedServer(){}

public static MemCachedServer getInstance(){
return instance;
}

public void init(){
sockIOPool = SockIOPool.getInstance();

String[] servers = {"127.0.0.1:11211"};
sockIOPool.setServers(servers);
//设置每个MemCached服务器的权重
Integer[] weights = {3};
sockIOPool.setWeights(weights);
//当一个memcached服务器失效的时候是否去连接另一个memcached服务器
sockIOPool.setFailover(true);
sockIOPool.setInitConn(3);
sockIOPool.setMinConn(3);
sockIOPool.setMaxConn(5);
//自查线程周期进行工作,其每次休眠时间
sockIOPool.setMaintSleep(30);
//socket的参数,true:写数据不缓存,立即发送出去
sockIOPool.setNagle(false);
//socket阻塞数据的超时时间
sockIOPool.setSocketTO(3000);
//设置是否检查memcached的服务器是否失效
sockIOPool.setAliveCheck(true);
//设置最大的处理时间
sockIOPool.setMaxIdle(1000 * 30 * 30);
sockIOPool.setSocketConnectTO(0);

sockIOPool.initialize();

if(memCachedClient == null){
memCachedClient = new MemCachedClient();
}
}

public void destroy(){
if(sockIOPool != null){
sockIOPool.shutDown();
}
}

public MemCachedClient getMemCachedClient(){
return memCachedClient;
}

}


public class MemcachedTest {

public static void main(String[] args){

MemCachedServer server = MemCachedServer.getInstance();
server.init();
MemCachedClient client = server.getMemCachedClient();

//client.set("firstKey", "firstValue", new Date(1000 * 1));

//client.delete("firstKey");

System.out.println(client.get("firstKey"));

server.destroy();
}

}


...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: