02.XMemcached的使用
1.XMemcached基本使用
public static void main(String[] args) throws IOException, TimeoutException, InterruptedException, MemcachedException{MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.110.100:11211"));MemcachedClient client = builder.build();// set 命令用于将 value(数据值) 存储在指定的 key(键) 中System.out.println("set :" + client.set("key001", 3600, "value001"));// add 命令用于将 value(数据值) 存储在指定的 key(键) 中System.out.println("add :" + client.add("key002", 3600, "value002"));// replace 命令用于替换已存在的 key(键) 的 value(数据值)System.out.println("replace :" + client.replace("key002", 3600, "value003"));// append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据System.out.println("append :" + client.append("key002", "value004"));// prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据System.out.println("prepend :" + client.prepend("key002", "value005"));// CAS 命令用于执行一个"检查并设置"的操作它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入GetsResponse<String> result = client.gets("key002");long cas = result.getCas();System.out.println("cas :" + client.cas("key002", 3600, "value002", cas));// get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空System.out.println("get :" + client.get("key001"));// gets 命令获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空System.out.println("gets :" + client.gets("key002"));// delete 命令用于删除已存在的 key(键)System.out.println("delete :" + client.delete("key002"));// incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作System.out.println("incr :" + client.incr("key002", 1L));// stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等System.out.println("stats :" + client.stats(new InetSocketAddress("192.168.110.100", 11211)));System.out.println("getStats :" + client.getStats());// stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)System.out.println("getStatsByItem items :" + client.getStatsByItem("items"));// stats slabs 命令用于显示各个slab的信息,包括chunk的大小、数目、使用情况等System.out.println("getStatsByItem slabs :" + client.getStatsByItem("slabs"));// stats sizes 命令用于显示所有item的大小和个数System.out.println("getStatsByItem sizes :" + client.getStatsByItem("sizes"));// flush_all 命令用于用于清理缓存中的所有 key=>value(键=>值) 对client.flushAll();System.out.println("OK!!!");client.shutdown();}

2.XMemcached深入使用
public static void main(String[] args) throws IOException, TimeoutException, InterruptedException, MemcachedException{// 集群服务器地址String server = "192.168.110.100:11211 192.168.110.101:11211 192.168.110.102:11211 192.168.110.103:11211";// 设置权重int[] weights = new int[] { 1, 2, 3, 4 };MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(server), weights);// 客户端集群算法:一致性哈希。默认是:按照key的哈希值模以连接数得到的余数builder.setSessionLocator(new KetamaMemcachedSessionLocator());MemcachedClient client = builder.build();// 返回可用的memcached服务器列表System.out.println(client.getAvailableServers());for (int i = 0; i < 100; i++){System.out.print(client.set("key-" + i, 3600, "value-" + i) + "-");}System.out.println("\nOK!!!");client.shutdown();}
public static void main(String[] args) throws IOException, InterruptedException{MemcachedClientBuilder builder = new XMemcachedClientBuilder();MemcachedClient client = builder.build();System.out.println(client.getAvailableServers());client.addServer("192.168.110.100", 11211, 1);client.addServer("192.168.110.101", 11211, 2);client.addServer("192.168.110.102", 11211, 3);client.addServer("192.168.110.103", 11211, 4);System.out.println(client.getAvailableServers());client.removeServer("192.168.110.102:11211 192.168.110.103:11211");Thread.sleep(100); // 由于xmemcached是多线程操作,所以休眠一段时间才能看到效果System.out.println(client.getAvailableServers());System.out.println("OK!!!");client.shutdown();}
public static void main(String[] args) throws IOException{MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.110.100:11211"));// 设置客户端集群的算法实现builder.setSessionLocator(new KetamaMemcachedSessionLocator());// 使用二进制协议builder.setCommandFactory(new BinaryCommandFactory());// Nio连接池builder.setConnectionPoolSize(5);// Failure模式和standby节点builder.setFailureMode(true);// 与tokyotyrant交互builder.setTranscoder(new TokyoTyrantTranscoder());MemcachedClient memcachedClient = builder.build();memcachedClient.shutdown();}
MemcachedClient builder=new XmemcachedClientBuilder(AddrUtil.getAddressMap("localhost:11211,localhost:11212 host2:11211,host2:11212"));
<!-- Memcached客户端工厂配置 --><bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown"><!-- Memcached的服务器集群 --><property name="servers"><!-- <value>host1:port1 host2:port2 host3:port3</value> --><value>${memcached.host1}</value></property><!-- 客户端节点权重设置,对应上面的servers配置 --><property name="weights"><list><value>${memcached.host1.weight}</value></list></property><!-- 设置连接池的大小 --><property name="connectionPoolSize" value="2"></property><!-- 使用二进制协议通讯,默认为TextCommandFactory --><property name="commandFactory"><bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean></property><!-- 分布式策略 --><property name="sessionLocator"><bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean></property><!-- 序列化转码器 --><property name="transcoder"><bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" /></property><!-- 缓冲区分配器 --><property name="bufferAllocator"><bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean></property><!-- 设置验证信息 --><!--<property name="authInfoMap"><map><entry key-ref="server1"><bean class="net.rubyeye.xmemcached.auth.AuthInfo" factory-method="typical"><constructor-arg index="0"><value>index</value></constructor-arg><constructor-arg index="1"><value>index-pd</value></constructor-arg></bean></entry></map></property>--></bean>
@Autowired@Qualifier("memcachedClient")private MemcachedClient memcachedClient;
02.XMemcached的使用的更多相关文章
- Xmemcached的FAQ和性能调整建议
转载 http://www.blogjava.net/killme2008/archive/2014/02/13/325564.html 一.XMemcached是什么?经常碰到的一个问题是很多朋友对 ...
- Kotlin中变量不同于Java: var 对val(KAD 02)
原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- iOS系列 基础篇 02 StoryBoard 故事板文件
iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyb ...
- [转]Tesseract 3.02中文字库训练
下载chi_sim.traindata字库下载tesseract-ocr-setup-3.02.02.exe 下载地址:http://code.google.com/p/tesseract-ocr/d ...
- Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock
本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLo ...
- Oracle Recovery 02 - 常规恢复之不完全恢复
背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 单实例. 二.常规恢复之不完全恢复:部分数据丢失 2.1 重做日志文件 ...
- 异步编程系列第02章 你有什么理由使用Async异步编程
p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...
- star ccm+ 11.02安装
STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作2 正式安装3 软件破解4 软件测试 1 安装准 ...
随机推荐
- 软件工程 speedsnail 冲刺7
2015-5-11 完成任务:蜗牛移动的一部分: 遇到问题: 问题1 速度,坐标,角度: 速度分级别设置: 坐标记录功能,方便障碍物检测: 暂定初始45度角: 解决1 未解决上述问题 明日任务: 蜗牛 ...
- Silverlight DataGrid数据行背景颜色控制
sdk:DataGrid数据绑定后,部分特殊的行需要用不同的背景颜色来显示.(注册DataGrid的LoadingRow事件) private void radGridView_LoadingRow( ...
- php生成随机字符串和验证码的类
网上有很多的php随机数与验证码的代码与文章,真正适用的没有几个. 索性自己搞一个吧. 开始本节的php教程 吧,以下代码的实现,主要做到可以很好区分一个get_code(),另一个create_ch ...
- 十天学会单片机Day1点亮数码管(数码管、外部中断、定时器中断)
1.引脚定义 P3口各引脚第二功能定义 标号 引脚 第二功能 说明 P3.0 10 RXD 串行输入口 P3.1 11 TXD 串行输出口 P3.2 12 INT0(上划线) 外部中断0 P3.3 1 ...
- 第八章 管理类型(In .net4.5) 之 加强封装
1. 概述 本章内容包括 访问控制符.属性 和 显式接口实现. 2. 主要内容 2.1 访问控制符 封装的核心是隐藏信息.访问控制符用来实现类型成员的访问控制. C#的访问控制符有:public, i ...
- Android SDK API (2.2,2.3,3.0)中文版文档
转的一篇.觉得很有用. Android SDK API (2.2,2.3,3.0)中文版文档 地址:http://android.laoguo.org固定连接:http://www.laoguo.or ...
- C扩展 从共享内存shm到memcache外部内存
引言 - ipc - shm 共享内存 本文会通过案例了解ipc 的共享内存机制使用, 后面会讲解C 如何使用外部内存服务memcached. 好先开始了解 linux 共享内存机制. 推荐先参看下面 ...
- ListView的多布局中的小问题
今天用到了ListView的多布局,我们需要额外重写两个方法 //返回多布局的个数 @Override public int getViewTypeCount() { return 3; } //用该 ...
- hdu 2425 Hiking Trip
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2425 Hiking Trip Description Hiking in the mountains ...
- 在C#使用文件监控对象FileSystemWatcher的几种方案
最近在项目中有这么个需求,就是得去实时获取某个在无规律改变的文本文件中的内容.首先想到的是用程序定期去访问这个文件,因为对实时性要求很高,间隔不能超过1S,而且每次获取到文本内容都要去分发给web服务 ...