- 浏览: 940655 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
hw7777777:
非常感谢作者提供这么好的工具,在使用的过程中遇到一些问题?1、 ...
基于java nio的memcached客户端——xmemcached -
SINCE1978:
多久过去了时间能抹平一切
无路用的人 -
fangruanyjq:
[img][/img]引用
用osworkflow写一个请假例子(提供代码下载) -
thinkingmysky:
楼主,你确定,java memached client能处理并 ...
memcached java client性能测试的几点疑问和说明 -
hellostory:
aaa5131421 写道07年2月hibernate已经出来 ...
dozer与BeanUtils
1、xmemcached是什么?
xmemcached是基于java nio实现的memcached客户端API。
实际上是基于我实现的一个简单nio框架 http://code.google.com/p/yanf4j/ 的基础上实现的(目前是基于yanf4j 0.52),核心代码不超过1000行,序列化机制直接挪用spymemcached的Transcoder。
性能方面,在读写简单类型上比之spymemcached还是有差距,在读写比较大的对象(如集合)有效率优势。
当 前0.50-beta版本,仅支持单个memcached服务器,以后考虑扩展。目前已经支持get、set、add、replace、delete、 incr、decr、version 这几个协议。API为阻塞模型,而非spymemcached的异步模式,异步模型在批处理的时候有优势,但是阻塞模 式在编程难度和使用上会容易很多。
2、为什么叫xmemcached?
因为我在厦门(XM)混饭......
3、xmemcached的下载和使用
项目主页:http://code.google.com/p/xmemcached/
下载地址:http://code.google.com/p/xmemcached/downloads/list
下载的压缩包中包括了依赖库、源码和打包后的jar,放到项目的lib目录下即可使用。
示例参考:
<!---->package
net.rubyeye.xmemcached.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.io.Serializable;
import net.rubyeye.xmemcached.XMemcachedClient;
class Name implements Serializable {
String firstName;
String lastName;
int age;
int money;
public Name(String firstName, String lastName, int age, int money) {
super ();
this .firstName = firstName;
this .lastName = lastName;
this .age = age;
this .money = money;
}
public String toString() {
return " [ " + firstName + " " + lastName + " ,age= " + age + " ,money= "
+ money + " ] " ;
}
}
public class Example {
public static void main(String[] args) {
try {
String ip = " 192.168.222.100 " ;
int port = 11211 ;
XMemcachedClient client = new XMemcachedClient(ip, port);
// 存储操作
if ( ! client.set( " hello " , 0 , " dennis " )) {
System.err.println( " set error " );
}
client.add( " hello " , 0 , " dennis " );
client.replace( " hello " , 0 , " dennis " );
// get操作
String name = (String) client.get( " hello " );
System.out.println(name);
// 批量获取
List < String > keys = new ArrayList < String > ();
keys.add( " hello " );
keys.add( " test " );
Map < String, Object > map = client.get(keys);
System.out.println( " map size: " + map.size());
// delete操作
if ( ! client.delete( " hello " , 1000 )) {
System.err.println( " delete error " );
}
// incr,decr
client.incr( " a " , 4 );
client.decr( " a " , 4 );
// version
String version = client.version();
System.out.println(version);
// 增删改查自定义对象
Name dennis = new Name( " dennis " , " zhuang " , 26 , - 1 );
System.out.println( " dennis: " + dennis);
client.set( " dennis " , 0 , dennis);
Name cachedPerson = (Name) client.get( " dennis " );
System.out.println( " cachedPerson: " + cachedPerson);
cachedPerson.money = - 10000 ;
client.replace( " dennis " , 0 , cachedPerson);
Name cachedPerson2 = (Name) client.get( " dennis " );
System.out.println( " cachedPerson2: " + cachedPerson2);
// delete
client.delete( " dennis " );
System.out.println( " after delete: " + client.get( " dennis " ));
client.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.io.Serializable;
import net.rubyeye.xmemcached.XMemcachedClient;
class Name implements Serializable {
String firstName;
String lastName;
int age;
int money;
public Name(String firstName, String lastName, int age, int money) {
super ();
this .firstName = firstName;
this .lastName = lastName;
this .age = age;
this .money = money;
}
public String toString() {
return " [ " + firstName + " " + lastName + " ,age= " + age + " ,money= "
+ money + " ] " ;
}
}
public class Example {
public static void main(String[] args) {
try {
String ip = " 192.168.222.100 " ;
int port = 11211 ;
XMemcachedClient client = new XMemcachedClient(ip, port);
// 存储操作
if ( ! client.set( " hello " , 0 , " dennis " )) {
System.err.println( " set error " );
}
client.add( " hello " , 0 , " dennis " );
client.replace( " hello " , 0 , " dennis " );
// get操作
String name = (String) client.get( " hello " );
System.out.println(name);
// 批量获取
List < String > keys = new ArrayList < String > ();
keys.add( " hello " );
keys.add( " test " );
Map < String, Object > map = client.get(keys);
System.out.println( " map size: " + map.size());
// delete操作
if ( ! client.delete( " hello " , 1000 )) {
System.err.println( " delete error " );
}
// incr,decr
client.incr( " a " , 4 );
client.decr( " a " , 4 );
// version
String version = client.version();
System.out.println(version);
// 增删改查自定义对象
Name dennis = new Name( " dennis " , " zhuang " , 26 , - 1 );
System.out.println( " dennis: " + dennis);
client.set( " dennis " , 0 , dennis);
Name cachedPerson = (Name) client.get( " dennis " );
System.out.println( " cachedPerson: " + cachedPerson);
cachedPerson.money = - 10000 ;
client.replace( " dennis " , 0 , cachedPerson);
Name cachedPerson2 = (Name) client.get( " dennis " );
System.out.println( " cachedPerson2: " + cachedPerson2);
// delete
client.delete( " dennis " );
System.out.println( " after delete: " + client.get( " dennis " ));
client.shutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4、xmemcached的计划?
1)、添加多服务器和集群支持
2)、性能优化、重构
3)、添加cas原子操作以及更多协议支持
有兴趣的瞧瞧,提提建议。
评论
11 楼
hw7777777
2016-05-17
非常感谢作者提供这么好的工具,在使用的过程中遇到一些问题?
1、使用连接池后,当一个节点断开连接后会一直尝试连接并报出connect refused 异常?是因为有重试机制吗?
2、动态添加节点addserver时当节点服务通信异常也会抛出connect refused 异常,并一直重试?
麻烦作者提供解决思路,非常感谢
1、使用连接池后,当一个节点断开连接后会一直尝试连接并报出connect refused 异常?是因为有重试机制吗?
2、动态添加节点addserver时当节点服务通信异常也会抛出connect refused 异常,并一直重试?
麻烦作者提供解决思路,非常感谢
10 楼
shhbobby
2011-02-17
项目使用中,向作者学习
9 楼
cmjcmj8080
2009-12-09
不好意思,列表是倒序排的,看了半天才看到在前面了 .还以为缓存没更新过来呢...
8 楼
cmjcmj8080
2009-12-09
你好,请问使用xmemcached的时候,怎么样使缓存中的数据同步?
比如 我要缓存一个在线社员列表,是登录一个添加一个,登出一个删除一个key
还是写个定时任务 扫描数据库 有更新的替换全部列表呢?
比如 我要缓存一个在线社员列表,是登录一个添加一个,登出一个删除一个key
还是写个定时任务 扫描数据库 有更新的替换全部列表呢?
7 楼
cmjcmj8080
2009-12-09
你好,请问使用xmemcached的时候,怎么样使缓存中的数据同步?
比如 我要缓存一个在线社员列表,是登录一个添加一个,登出一个删除一个key
还是写个定时任务 扫描数据库 有更新的替换全部列表呢?
比如 我要缓存一个在线社员列表,是登录一个添加一个,登出一个删除一个key
还是写个定时任务 扫描数据库 有更新的替换全部列表呢?
6 楼
yuyee
2009-11-10
5 楼
dennis_zane
2009-11-03
yuyee 写道
有没中文版的....
http://code.google.com/p/xmemcached/wiki/Example_zh
中文指南
4 楼
yuyee
2009-11-03
有没中文版的....
3 楼
pan_java
2009-08-17
相关文档太少了,注解不全,希望完善!
2 楼
dennis_zane
2009-05-27
fly_hyp 写道
测试过了性能非常的好。
呵呵,谢谢,欢迎使用,有任何BUG和建议,请及时发给我,我的email killme2008@gmail.com
1 楼
fly_hyp
2009-05-27
测试过了性能非常的好。
发表评论
-
memcached分布测试报告(一致性哈希情况下的散列函数选择)
2009-03-10 16:30 8547一、背景资料 memcached本身是集中式的缓存系统 ... -
xmemcached 0.60 优化过程
2009-03-06 14:37 3526充分利用jprofile等 ... -
Xmemcached vs Spymemcached 3th(linux下测试结果和多节点下表现)
2009-03-07 10:43 4884翠花,上图,首先是容器类和自定义对象的get、set在不同并发 ... -
xmemcached发布1.0-BETA版
2009-03-09 15:32 4130xmemcached 发布1.0-beta ,从0.6 ... -
山寨nio框架yanf4j发布0.50-alpha
2009-02-04 19:28 4224俺的山寨nio框架yanf4j发布0.50-alpha版本,下 ... -
yanf4j引入了客户端非阻塞API
2009-02-19 00:15 3120yanf4j 发布一个0.50-beta2 版本,这个版本最 ... -
使用yanf4j写个简单聊天室
2008-11-26 11:36 5402yanf4j 简介,请看这里 ... -
Java字符串的最大长度
2009-01-15 01:37 7589在cpp中为了可移植性,s ... -
yanf4j-0.41 beta发布
2009-01-20 14:01 1868项目名称:yanf4j (yet another nio fr ... -
再谈Selector的wakeup方法
2009-02-01 11:15 3052过去推荐过两篇blog《Java NIO类库Selector机 ... -
Yet another nio framework for java
2008-10-11 14:25 2052项目名称:Yanf4j(Yet another nio fra ... -
阻塞队列的性能对比
2008-09-08 10:06 5746阻塞队列的性能对 ... -
java package的设计原则
2008-09-06 00:15 2118典型的J2EE项目,package的设计有成熟的套路可 ... -
线程池池
2008-09-01 19:39 1998这个题目比较怪,听俺道来。俺一直在负责公司游戏服 ... -
第一个MapReduce任务
2008-08-23 11:10 2784前两天在公司内网上搭了个2个节点hadoop集群, ... -
从HDFS看分布式文件系统的设计需求
2008-08-15 22:39 8120分布式文件系统的 ... -
HDFS用户指南(翻译)
2008-08-14 20:27 2141HDFS用户指南 原文地址:http:/ ... -
Ehcache配置的overflowToDisk属性
2008-08-06 23:18 10839Ehcache的overflowToDisk属性用来配 ... -
工作的几个tip
2008-07-07 20:47 28871、如果用java6的ScriptEngineManager ... -
NIO的SelectableChannel关闭的一个问题
2008-06-18 01:53 7181SocketChannel和ServerSocket ...
相关推荐
Xmemcached是基于java nio实现的高性能可扩展的memcached客户端。它的主要特点: 高性能,稳定可靠,已经在众多公司的众多项目里得到应用。 功能完备:客户端分布式、权重、最新最完整的协议支持。 ...
在Java开发中,有三种主流的Memcached客户端库供开发者选择:官方的基于传统阻塞IO的客户端、Dustin Sallings实现的基于Java NIO的Spymemcached以及XMemcached。 1. **官方客户端** 官方提供的客户端是由Greg ...
2.spymemcached,支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常 报timeOut等相关异常。 3.xmemcached,XMemcached也使用得比较广泛,而且...
本篇文章将详细介绍两个常用的Java Memcached客户端:xmemcached和memcache-client-forjava。 **1. xmemcached** xmemcached是由Ketoo开发的一个高性能、高可用性的Java Memcached客户端。它提供了丰富的API,支持...
XMemcached是基于 java nio的Memcached客户端,java nio相比于传统阻塞 io 模型来说,有 效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞 IO为了提高效率,需要 创建一定数量的连接形成连接池,而 nio...
介绍XMemcached是Java中的一种高性能,易于使用的阻塞多线程memcached客户端。 它是基于nio的,并且经过了精心设计,以实现最佳性能。快速开始:有助于源代码并将其签出到本地计算机。 进行更改并创建拉取请求。 ...
基于java nio实现的高性能可扩展的memcached客户端。虽然Java的memcached库已经很多,但是这些Java开源memcached库并没有一个是基于NIO框架编写,因此并不能够充分发挥Java NIO的性能优势.... xmemcached的项目主页...
- **基于Java NIO**:XMemcached采用了Java NIO技术,相比传统的阻塞I/O模型具有更高的效率,尤其是在高并发场景下。传统阻塞I/O通常需要通过创建多个连接来形成连接池以提高性能,而Java NIO仅需维持少量连接即可...
xmemcached是一个高性能、易用且功能丰富的Java Memcached客户端库。它提供了全面的API,使得开发者能够方便地与Memcached缓存系统进行交互,从而提高Web应用的性能和响应速度。本文将深入探讨xmemcached的相关知识...
Xmemcached是一款基于Java编写的高性能、高可用性的Memcached客户端库,由Kafka的创始人Jay Kreps开发。它提供了丰富的功能和优秀的性能,使得在Java应用中集成和使用Memcached变得更加简单。Xmemcached致力于提供...
XMemcached是一款高效能的Java客户端库,专为memcached服务设计。memcached是一种分布式内存缓存技术,主要用于减轻数据库的压力并加速动态Web应用程序的响应速度。XMemcached不仅支持memcached的所有协议,还具备一...
XMemcached是基于Java NIO实现的,相比其他如Spymemcached等客户端,它具有多个显著优势。 **主要特性** 1. **高性能**:XMemcached利用Java NIO的优势,减少线程创建和切换的开销,尤其在高并发场景下表现出色。...
Xmemcached是一个高性能、轻量级的Java客户端库,专门用于连接和操作Memcached分布式内存缓存系统。这份手册不仅包含了基础的API使用方法,还涵盖了如何将Xmemcached与Spring等主流框架进行集成的详细配置信息。 **...
XMemcached是基于Java NIO实现的,相比传统的阻塞IO模型,NIO具有更高的并发性能和较低的资源消耗,尤其在处理大量并发请求时优势明显。 **XMemcached的主要特性** 1. **高性能**:XMemcached利用Java NIO的优势,...
官方提供的Memcached Client for Java基于Java BIO实现,SpyMemcached和XMemcached则是基于Java NIO的实现,其中XMemcached在并发性能上表现更优,SpyMemcached也有不错的性能。在实际应用中,可以根据项目需求选择...
xmemcached是一款高性能、轻量级的Java客户端库,专为Memcached缓存系统设计,其1.4.3版本提供了丰富的功能和优化,旨在提升应用的性能和可扩展性。在本文中,我们将详细探讨xmemcached的核心特性和使用方法,帮助...
- **高性能**: Xmemcached使用非阻塞I/O模型,基于NIO框架,确保低延迟和高吞吐量。 - **线程安全**: Xmemcached的API设计为线程安全,可以避免多线程环境下的数据竞争问题。 - **丰富的API**: 提供了包括基本的...
其次,Xmemcached是另一个强大且高效的Java客户端,它支持多线程、NIO和Future模式,提供了丰富的API,可以设置超时时间、会话持久化策略等。使用Xmemcached,开发者可以更加灵活地控制Memcached的使用。 在实际...
XMemcached is a high performance, easy to use blocking multithreaded memcached client in java. It's nio based (using my opensource nio framework :yanf4j), and was carefully tuned to get top ...
xmemcached由Kenshoo公司开发,也是一个高性能、高可用性的Memcached Java客户端。与spymemcached相比,xmemcached提供了更全面的API,支持更多的Memcached命令。它的特点包括: - 支持多线程并发操作 - 使用NIO...