没有参考代码的时候重新写还是有点累的,这是重温了,第一次写的时候参考了别的一些乱七八糟的代码,虽然不是和这个一样的,不过在不懂的情况下还是很快写出来了,反而是这次光是找需要哪些jar都搞了半天,最后发现extern的用一个jar就够了,addresses和auth之前也是糊里糊涂的,这次总算搞清楚了
maven引入
<dependency> <groupId>com.googlecode.xmemcached</groupId> <artifactId>xmemcached</artifactId> <version>1.4.3</version> </dependency>
先按照在前面的一篇《记一次couchbase(memcached)安装以及使用》的步骤安装好,类型选择couchbase就行了,
测试代码如下:
package Test.test; import java.io.IOException; import java.util.concurrent.TimeoutException; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.MemcachedClientBuilder; import net.rubyeye.xmemcached.XMemcachedClientBuilder; import net.rubyeye.xmemcached.auth.AuthInfo; import net.rubyeye.xmemcached.command.BinaryCommandFactory; import net.rubyeye.xmemcached.exception.MemcachedException; import net.rubyeye.xmemcached.utils.AddrUtil; public class App { public static void main( 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(new BinaryCommandFactory()); 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验证的话先把服务器上的验证去掉然后这样写
package Test.test; import net.spy.memcached.AddrUtil; import net.spy.memcached.MemcachedClient; public class App { public static void main( 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 queue 2015-03-01 23:26:38.271 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@be7667 2015-03-01 23:26:38.276 WARN net.spy.memcached.MemcachedConnection: Could not redistribute to another node, retrying primary node for lwk. 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:UsersAdministrator>telnet 192.168.92.128 11200
输入stats,得到一系列的服务器上的信息
stats STAT delete_misses 0 STAT rejected_conns 0 STAT connection_structures 5000 STAT reclaimed 0 STAT limit_maxbytes 67108864 STAT decr_hits 0 STAT curr_conns_on_port_11209 12 STAT curr_conns_on_port_11210 5 STAT curr_connections 19 STAT rusage_system 17.695309 STAT cas_misses 0 STAT bytes 64 STAT get_misses 1 STAT bytes_read 380638 STAT get_hits 4 STAT decr_misses 0 STAT rusage_user 1093.362783 STAT bucket_conns 9 STAT cmd_flush 0 STAT tcp_nodelay enable STAT uptime 25500 STAT max_conns_on_port_11209 1000 STAT total_items 2 STAT incr_hits 0 STAT max_conns_on_port_11210 9000 STAT time 1425174744 STAT daemon_connections 4 STAT pointer_size 64 STAT version 2.1.0r STAT engine_maxbytes 104857600 STAT evictions 0 STAT total_connections 58 STAT curr_items 1 STAT delete_hits 0 STAT cas_hits 0 STAT auth_errors 0 STAT threads 4 STAT pid 1465 STAT auth_cmds 4 STAT cas_badval 0 STAT cmd_set 2 STAT bucket_active_conns 1 STAT cmd_get 5 STAT conn_yields 0 STAT listen_disabled_num 0 STAT bytes_written 8718605 STAT libevent 2.0.11-stable STAT accepting_conns 1 STAT incr_misses 0 END
现在可以add、set、get