没有参考代码的时候重新写还是有点累的,这是重温了,第一次写的时候参考了别的一些乱七八糟的代码,虽然不是和这个一样的,不过在不懂的情况下还是很快写出来了,反而是这次光是找需要哪些jar都搞了半天,最后发现extern的用一个jar就够了,addresses和auth之前也是糊里糊涂的,这次总算搞清楚了
maven引入
com.googlecode.xmemcached
xmemcached
1.4.3
先按照在前面的一篇《记一次couchbase(memcached)安装以及使用》的步骤安装好,类型选择couchbase就行了,
测试代码如下:
packageTest.test;importjava.io.IOException;importjava.util.concurrent.TimeoutException;importnet.rubyeye.xmemcached.MemcachedClient;importnet.rubyeye.xmemcached.MemcachedClientBuilder;importnet.rubyeye.xmemcached.XMemcachedClientBuilder;importnet.rubyeye.xmemcached.auth.AuthInfo;importnet.rubyeye.xmemcached.command.BinaryCommandFactory;importnet.rubyeye.xmemcached.exception.MemcachedException;importnet.rubyeye.xmemcached.utils.AddrUtil;public classApp
{public static voidmain( String[] args )
{try{
MemcachedClientBuilder builder= new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.92.128:11211")) ;
builder.addAuthInfo(AddrUtil.getOneAddress("192.168.92.128:11211"), AuthInfo.plain("azul", "xxxx"));
builder.setCommandFactory(newBinaryCommandFactory());
builder.setFailureMode(true);
builder.setConnectionPoolSize(10);
MemcachedClient client=builder.build();
client.set("lwk", 0, "hello");
String value= client.get("key");
System.out.println(value);
client.shutdown();
}catch(IOException e) {
e.printStackTrace();
}catch(TimeoutException e) {
e.printStackTrace();
}catch(InterruptedException e) {
e.printStackTrace();
}catch(MemcachedException e) {
e.printStackTrace();
}
System.out.println("end...");
}
}
执行结果:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
hello
end...
管理界面上可以看到:
它是密文存储的
如果不用sasl验证的话先把服务器上的验证去掉然后这样写
packageTest.test;importnet.spy.memcached.AddrUtil;importnet.spy.memcached.MemcachedClient;public classApp
{public static voidmain( String[] args )
{try{
MemcachedClient client= new MemcachedClient(AddrUtil.getAddresses("192.168.92.128:11211"));
client.set("lwk", 0, "hello");
Object value= client.get("lwk");
System.out.println(value);
client.shutdown();
}catch(Exception e) {
e.printStackTrace();
}
System.out.println("end...");
}
}
结果:
2015-03-01 23:26:38.268 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/192.168.92.128:11202, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue2015-03-01 23:26:38.271 INFO net.spy.memcached.MemcachedConnection: Connection state changed forsun.nio.ch.SelectionKeyImpl@be76672015-03-01 23:26:38.276 WARN net.spy.memcached.MemcachedConnection: Could not redistribute to another node, retrying primary node forlwk.
hello
end...2015-03-01 23:26:38.284 INFO net.spy.memcached.MemcachedConnection: Shut down memcached client
这里是通过java client访问,一会儿用命令行试一下。
服务器上起了一个memcached服务之后,
如果是auth-less的,可以用telnet客户端直接去连接
C:\Users\Administrator>telnet 192.168.92.128 11200
输入stats,得到一系列的服务器上的信息
stats
STAT delete_misses0STAT rejected_conns0STAT connection_structures5000STAT reclaimed0STAT limit_maxbytes67108864STAT decr_hits0STAT curr_conns_on_port_1120912STAT curr_conns_on_port_112105STAT curr_connections19STAT rusage_system17.695309STAT cas_misses0STAT bytes64STAT get_misses1STAT bytes_read380638STAT get_hits4STAT decr_misses0STAT rusage_user1093.362783STAT bucket_conns9STAT cmd_flush0STAT tcp_nodelay enable
STATuptime 25500STAT max_conns_on_port_112091000STAT total_items2STAT incr_hits0STAT max_conns_on_port_112109000STATtime 1425174744STAT daemon_connections4STAT pointer_size64STAT version2.1.0r
STAT engine_maxbytes104857600STAT evictions0STAT total_connections58STAT curr_items1STAT delete_hits0STAT cas_hits0STAT auth_errors0STAT threads4STAT pid1465STAT auth_cmds4STAT cas_badval0STAT cmd_set2STAT bucket_active_conns1STAT cmd_get5STAT conn_yields0STAT listen_disabled_num0STAT bytes_written8718605STAT libevent2.0.11-stable
STAT accepting_conns1STAT incr_misses0END
现在可以add、set、get