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 ...
随机推荐
- Android 百度地图 SDK v3.0.0 (一)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37729091 最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SD ...
- linux的make install命令
tar zxvf redis-2.8.15.tar.gz cd redis-2.8.15/ make make test make install
- Windbg简单介绍
1.1 使用帮助 Windbg中的命令分为三种:基本命令.元命令和扩展命令.基本命令和元命令都是调试器自带的,元命令以" ."开头. 扩展命令是外部加入的,以"!&quo ...
- SqlServer数据库设计,纠结的问题,有胆你就来!
最近,小菜遇到了数据库设计上的一个问题,希望各位大侠再次,直抒己见,帮忙分析一下.也可有更好的设计,请直接提出来. 要求:数据库(SQL Server 2005)存储每个学生,单个客观题答案.分数,主 ...
- Mac系统配置多个git账号
1.进入ssh目录 #cd ~/.ssh/ 2.用ssh-keygen命令生成一组新的id_rsa_new和id_rsa_new.pub #ssh-keygen -t rsa -C"new ...
- DirectX Graphics Infrastructure (DXGI) 全屏设置相关问题
原文地址: https://msdn.microsoft.com/en-us/library/windows/desktop/ee417025(v=vs.85).aspx 未完待续... DXGI是在 ...
- javascript call()与apply()
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- MySQL递归查询所有子节点,树形结构查询
--表结构 CREATE TABLE `address` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code_value` varchar(32) DEFAUL ...
- 使用 HTTP 缓存机制提升系统性能
摘要 HTTP缓存机制定义在HTTP协议标准中,被现代浏览器广泛支持,同时也是一个用于提升基于Web的系统性能的广泛使用的工具.本文讨论如何使用HTTP缓存机制提升基于Web的系统,以及如何避免误用. ...
- 我自己的style
/** DATE:Time AUTHOR:Zoe TEAM:公司名称 INTRO:cssName **/ @charset "utf-8"; /*通用公共样式 开始*/ /* 清除 ...