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 ...
随机推荐
- 从零开始写一个Tomcat(壹)
Tomcat是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,也是一个servlet容器的优秀解决方案,做Java web开发的基本上都使用过,但是tomcat大多时间对于我们是一个黑 ...
- Java基础知识强化78:正则表达式之获取功能(案例)
1. 获取下面这个字符串中由三个字符组成的单词. da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu? 2. ...
- CentOS 7 修改hostname
centOS 7 里面修改hostname的方式有所改变,修改/etc/hosts和/etc/sysconfig/network两个文件已经不能生效.使用的新命令是 : hostnamectl set ...
- 95秀-PullToRefreshListView 示例
正在加载.暂无数据页面 public class RefreshGuideTool { private RelativeLayout rl_loading_guide;//整个View ...
- Everything 使用技巧
使用技巧 可以使用逻辑符空格(与), |(或),!(非),及通配符 * 和 ? ,符号或搜索内容之间必须加空格且空格任意使用如果经常搜索同一内容,可以使用书签功能,且可以对书签进行添加.编辑.排序.导 ...
- boostrap按钮
bootstrap按钮 对应链接:http://v3.bootcss.com/css/#buttons 使用时添加基础类class:btn 默认样式class=btn-default,控制大小clas ...
- JS类百度的动态提示框思路及完成
参考的代码来自这里: http://www.jb51.net/article/28075.htm 不过说实话,这个网站太烂了,不适合看代码,另外写代码的人是个大牛,但是却没有模块化思想,所以朕不高兴直 ...
- solr和mongodb比较
solr非常灵活,虽然mongodb添加索引查询速度比较快,但是solr查询比mongodb更加灵活,所以需要获取mongodb的oplog,实时将oplog中的数据推送到solr中 oplog A ...
- pl/sql的工具导入和代码导入
工具导入:在导入的文件中添加导入工具.导入imp:F:\app\Administrator\product\11.1.0\db_1\BIN\imp.exe导出exp:F:\app\Administra ...
- start with connect by prior学习
这是oracle中的树查询,查询出来的数据会根据上下级组成树的结构.select * from mw_sys.mwt_pd_deps start with obj_id = '63EBEC8E-E76 ...