memcached学习——常用命令+基于java客户端的3种简单实现(二)
2017-01-10 01:00
597 查看
常用命令:
memcached设计的原则就是简单,所以支持的命令也不是特别多~
1.查看memcached的状态,主要用于分析内存的使用状况、优化内存分配等
2.存
3.取
4.删
基于java客户端的三种实现
1.使用最久、最广泛的memcached client for java
2.spymemcached
3.xmemcached
memcached设计的原则就是简单,所以支持的命令也不是特别多~
1.查看memcached的状态,主要用于分析内存的使用状况、优化内存分配等
stats 查看memcached的运行状态 stats items 查看items的状态 stats slabs 查看slabs的内存分配状态,注重点在性能而非计数 stats sizes 查看
2.存
set 存值,若key已存在会覆盖原值 add 存值,若key已存在保存失败 replace 替换原值,若key不存在替换失败 append 在原value的末尾上追加内容 prepend 在原value的头部追加内容 cas(check and set) 检索并设置值 incr 取值自增 decr 取值自减
3.取
get key 获取某个key的值 gets key1 key2 获取多个key的值
4.删
delete key 删除某个key flush_all 清除所有存储的内容,不会释放内存
基于java客户端的三种实现
1.使用最久、最广泛的memcached client for java
package com.wang.client.danga; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; /** * memcached client for java 较早推出,应用广泛、运行稳定 * 下载地址:https://cloud.github.com/downloads/gwhalin/Memcached-Java-Client/java_memcached-release_2.6.6.zip * 解压出依赖jar包:commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar * @author wlyfree */ public class MemcachedClientForJava_Danga_Demo { public static void main(String[] args) { MemCachedClient client = new MemCachedClient(); // 初始化SockIOPool,管理memcached连接池 SockIOPool pool = SockIOPool.getInstance(); // 配置 String[] servers = new String[] { "10.90.11.142:11211", "10.90.11.142:11212", "10.90.11.142:11213" }; pool.setServers(servers); pool.setFailover(true); pool.setInitConn(10); // 设置初始连接 pool.setMinConn(5);// 设置最小连接 pool.setMaxConn(250); // 设置最大连接 pool.setMaxIdle(1000 * 60 * 60 * 3); // 设置每个连接最大空闲时间3个小时 pool.setMaintSleep(30); pool.setNagle(false); pool.setSocketTO(3000); pool.setAliveCheck(true); pool.initialize(); //测试 System.out.println(client.add("aa", "11")); System.out.println(client.get("aa")); System.out.println(client.set("aa", "22")); System.out.println(client.get("aa")); System.out.println(client.add("aa", "33")); System.out.println(client.get("aa")); System.out.println(client.delete("aa")); System.out.println(client.get("aa")); } }
2.spymemcached
package com.wang.client.spy; import java.io.IOException; import java.net.InetSocketAddress; import net.spy.memcached.MemcachedClient; import net.spy.memcached.internal.OperationFuture; /** * 性能稳定、稳定性略差 * 依赖jar包:spymemcached-2.10.2.jar * 当集群内某节点down机,数据不会hash到新节点,而是直接失败。修改源码可能会修复此问题:http://colobu.com/2015/11/24/One-spymemcached-issue-when-one-node-fails/ * 总结完了,感觉这么不稳定的东西应该没人在生产环境使用吧! * @author wlyfree */ public class SpyMemcached_Demo { public static void main(String[] args) { try { MemcachedClient client = new MemcachedClient(new InetSocketAddress("10.90.11.142", 11211)); OperationFuture<Boolean> operationFuture = client.add("spy", 0, "spy1"); System.out.println(operationFuture.getStatus() + "==========" + client.get("spy")); operationFuture = client.set("spy", 0, "spy2"); System.out.println(operationFuture.getStatus() + "==========" + client.get("spy")); operationFuture = client.add("spy", 0, "spy3"); System.out.println(operationFuture.getStatus() + "==========" + client.get("spy")); operationFuture = client.delete("spy"); System.out.println(operationFuture.getStatus() + "==========" + client.get("spy")); } catch (IOException e) { e.printStackTrace(); } } }
3.xmemcached
package com.wang.client.xmemcached; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.XMemcachedClient; /** * 基于nio实现,性能好,效率高,资源耗费少 * 依赖jar包:xmemcached-版本号.jar * 程序托管到github了:https://github.com/killme2008/xmemcached/ * 作者:原淘宝某几位大神 * @author wlyfree */ public class xmemcached_Demo { public static void main(String[] args) { try { MemcachedClient client = new XMemcachedClient("10.90.11.142",11211); String key = "xmemcached"; System.out.println(client.add(key,0,"x1")); System.out.println(client.get(key)); System.out.println(client.set(key,0,"x2")); System.out.println(client.get(key)); System.out.println(client.add(key,0,"x3")); System.out.println(client.get(key)); System.out.println(client.delete(key)); System.out.println(client.get(key)); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- java 命令对象简单学习实现:
- Java学习3:基于Intellij IDEA实现一个简单Servlet
- Java Web Start学习,与JDK中keytool常用命令
- 基于 java 的 Web Service 简单实现
- 210学习日记(5)_简单命令的实现.doc
- JAVA生成WebService客户端命令3种方式
- memcached 的简单命令和Java 使用 memcached 的简单例子
- java基于TCP的socket编程简单实现[代码实践过]
- python学习(1)--实现简单的服务器与客户端
- Java学习笔记24:Mvn常用命令
- 用Java实现一个简单的服务器与客户端程序
- JAVA学习笔记(十)基于LinkedList实现栈和队列
- 工作之余,整理了一下平时处理数据的一些常用的,简单的方法。希望对学习JAVA的朋友有点帮助
- 基于Java实现简单Http服务器之一
- ASIO学习三:asioftp (FTP客户端的简单实现)
- Java 利用套接字Socket实现简单的服务器与客户端通信
- java 实现简单http服务端,客户端DEMO
- java学习之路——简单的工厂模式实现
- MyEclispe基于JAX-WS的WebService服务端客户端简单实现示例
- Java实现简单的Socket服务器与客户端字符串通讯(适合初学者阅读)