memcached学习——常用命令+基于java客户端的3种简单实现(二)
常用命令:
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();
} }
}
memcached学习——常用命令+基于java客户端的3种简单实现(二)的更多相关文章
- maven3常用命令、java项目搭建、web项目搭建详细图解(转)
转自:http://blog.csdn.net/edward0830ly/article/details/8748986 maven3常用命令.java项目搭建.web项目搭建详细图解 2013-0 ...
- hadoop学习(三)HDFS常用命令以及java操作HDFS
一.HDFS的常用命令 1.查看根目录下的信息:./hadoop dfs -ls 2.查看根目录下的in目录中的内容:./hadoop dfs -ls in或者./hadoop dfs -ls ./i ...
- Redis的常用命令与Java整合及高级应用篇
一,redis是什么? 首先数据库分为关系型数据库和非关系型数据库,关系型数据库是采用关系模型来组织数据的数据库,简单来说就是二维表格模型,同时保证事务的一致性. 相反非关系型数据库采用key ...
- hdfs shell命令及java客户端编写
一. hdfs shell命令 可以通过hadoop fs 查看所有的shell命令及其用法. 传文件到hdfs: hadoop fs -put /home/koushengrui/Downloads ...
- 由Memcached升级到 Couchbase的 Java 客户端的过程记录(一)
背景: 在项目启动的选用了Memcached 作为缓存服务器,采用了Xmemcached作为客户端.在项目中使用了Shiro,为了给 Shiro 配置缓存的时候,采用了开源代码 https://g ...
- maven3常用命令、java项目搭建、web项目搭建详细图解
http://blog.csdn.net/edward0830ly/article/details/8748986 ------------------------------maven3常用命令-- ...
- JAX-WS 学习一:基于java的最简单的WebService服务
JAVA 1.6 之后,自带的JAX-WS API,这使得我们可以很方便的开发一个基于Java的WebService服务. 基于JAVA的WebService 服务 1.创建服务端WebService ...
- hadoop系列二:HDFS文件系统的命令及JAVA客户端API
转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...
- maven3常用命令、java项目搭建、web项目搭建
------------------------------maven3常用命令--------------------------- 1.常用命令 1)创建一个Project mvn archety ...
随机推荐
- jQuery.each() 的5个案例
1.基本的jQuery.each实例 看看 each() 函数是如何处理一个 jQuery 对象的.首先选取所有的a标签 并且打印出他们的href属性. 需要注意的是, 在 each() 当中使用 j ...
- yii console.php 报错 Property "CConsoleApplication.theme" is not defined.
默认配置的话,是不会出现这个错误的,应该是有人为修改了 yiic.php 这个文件,本来是 $config 载入的应该是 console.php ,人为修改后载入了 main.php 这个配置文件了 ...
- Linux最大文件打开数
介绍 在Linux下有时会遇到Socket/File : Can't open so many files的问题.其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默认是 ...
- ListIterator add remove 使用注意
add方法示例 //在最前面添加 List<String> list1 = new LinkedList<String>(Arrays.asList(new String[] ...
- 通过URL推送POST数据
由于到了一家新公司重新开始接触MVC和其他的一些东西.所以的重新拾起许多东西. 前一段时间让我写一个和第三方公司推送对接的方法.通过对方提供的URL把数据post推送出去. 我把url到了web.co ...
- JAVA List与数组间相互转换
1.list转数组 例如: List<String> list = new ArrayList<String>(); list.add("aa"); li ...
- linux 第二天
文件权限和用户组 groupadd 组名 groupadd policeman 查看组 vi /etc/group cat /etc/group 创建用户,并同时指定将该用户分配到哪个组 userad ...
- iOS9中通过UIStackView实现类似大众点评中的效果图
效果图如下: 实现思路 整体可以看做为一个大的UIStackView(排列方式水平)包括一个子UIStackView(排列方式垂直),其中左边包括一个图片,右边的UIStackView中可以看做包括三 ...
- c#geckofx文件流下载
备注:内容仅提供参考. ⒈添加引用:using Gecko; ⒉然后根据自己的情况在某个方法内添加事件: LauncherDialog.Download += new EventHandler< ...
- Jsp通过JDBC连接到SQL Server2008数据库遇到的几个问题
今天刚刚学jdbc ,之前通过main连到过Sql server 2008现在通过jsp连接sql server 2008,遇到了一些问题,跟大家分享一下,避免少走弯路 一.ClassNotFound ...