[转载]转Java 几个memcached 连接客户端对比 选择

原文地址:转Java 几个memcached 连接客户端对比 选择作者:闪出光芒

Xmemcached 1.2.6.1 released,所以更新了一下Java Memcached Client Benchmark。对比下Xmemached,SpymemcachedJava-Memcached-Client这三个开源客户端的性能,具体的测试信息可以看这个链接

测试源码:

Java代码

  1. svn co http://xmemcached.googlecode.com/svn/trunk/benchmark/

测试结果:

Java代码

  1. svn co http://xmemcached.googlecode.com/svn/trunk/benchmark/result

总结下测试结果,为还在选择和考察java memcached client的朋友提供参考:

1、Java-Memcached-Client 2.5.1这个版本果然有很大改进,性能上有非常大的提升,从测试结果来看在小于100并发下有非常明显的优势,同时耗费资源也相对较多。但是在300并 发访问下,Java-Memcached-Client会不断地报错:

Java代码

  1. com.schooner.MemCached.SchoonerSockIOPool Sun Oct 17 11:09:05 GMT+08:00 2010 - ++++ failed to get SockIO obj for: 10.232.36.82:12000
  2. com.schooner.MemCached.SchoonerSockIOPool Sun Oct 17 11:09:05 GMT+08:00 2010 - ++++ failed to get SockIO obj for: 10.232.36.82:12000
  3. com.schooner.MemCached.SchoonerSockIOPool Sun Oct 17 11:09:05 GMT+08:00 2010 - ++++ failed to get SockIO obj for: 10.232.36.90:12000
  4. com.schooner.MemCached.SchoonerSockIOPool Sun Oct 17 11:09:05 GMT+08:00 2010 - ++++ failed to get SockIO obj for: 10.232.36.82:12000
  5. com.schooner.MemCached.SchoonerSockIOPool Sun Oct 17 11:09:05 GMT+08:00 2010 - ++++ failed to get SockIO obj for: 10.232.36.90:12000
  6. com.schooner.MemCached.SchoonerSockIOPool Sun Oct 17 11:09:05 GMT+08:00 2010 - ++++ failed to get SockIO obj for: 10.232.36.82:12000

并且无法正常地存取数据,而xmc和spy却可以正常应对这一场景。因此可以看到在300并发下,Java-Memcached-Client测试的结果直接为0,因为测试无法完成。尽管我尝试将最大连接数调整到2000,仍然是无法正常完成测试。

2、Xmemcached无论在低并发还是高并发访问的情况下,都可以保持一个比较优秀的性能表现,从xmc和spy的对比来看,xmc的优势相当大。

3、从用户选择角度来说,如果你的应用对memached的访问负载并不高,Java-Memcached-Client是一个不错的选择,但是在高峰访问的时候可能命中率会有个急剧的波动;如果你的应用访问memached的负载较高,此时我推荐你选择xmemcached;如果你需要异步的批量处理(future模式),可以选择spymemcached;如果你不知道你的应用是什么状况,我推荐你用xmemcached,可以在任何情况下获得一个比较好的性能表现

时间: 2024-12-26 06:22:09

[转载]转Java 几个memcached 连接客户端对比 选择的相关文章

Zookeeper客户端对比选择_4

Zookeeper客户端对比选择 本文思维导图 使用框架的好处是自带一套实用的API,但是Zookeeper虽然非常强大,但是社区却安静的可怕,版本更新较慢,下面会先从zookeeper原生API的不足说起,然后引出现在流行的开源客户端工具. 1.原生API 1.创建连接的时候是异步的,所以我们在开发的时候需要人工的写代码等待创建节点的状态,如果需要的话. 2.连接时无超时重连机制.本人觉得这个非常重要,因为在现实使用中,网络是不可信的,在创建节点的时候要考虑到网络的不稳定性.因此,超时重连机制

[转载]各种java生成word解决方案的优缺点对比

解决方案 优点 缺点 Jacob 功能强大 直接调用VBA接口,程序异常复杂:服务器必须是:windows系统+安装Office:服务器端自动化com接口容易产生死进程造成服务器宕机 Apache POI 对Excel的操作功能强大:跨平台 操作word的功能比较弱:必须针对doc和docx两种文档格式写不同的代码:兼容性差 iText 功能一般:跨平台 只能生成rtf格式的文件,不是真正的word文件格式 Java2word 功能强大:代码相对简单 只是对Jacob的一种封装,具有Jacob的

java中一个memcached案例

下面先来一个网络上的案例,这个案例比较简单,直接在类中进行一些参数的配置,具体代码如下: package com.wzpmt; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemCachedManager

[转载] Comet:基于 HTTP 长连接的“服务器推”技术

转载自http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ “服务器推”技术的应用 传统模式的 Web 系统以客户端发出请求.服务器端响应的方式工作.这种方式并不能满足很多现实应用的需求,譬如: 监控系统:后台硬件热插拔.LED.温度.电压发生变化: 即时通信系统:其它用户登录.发送信息: 即时报价系统:后台数据库内容发生变化: 这些应用都需要服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求.“服务器推”技术在现实应用中有一些解决

JAVA实现的异步redis客户端

再使用redis的过程中,发现使用缓存虽然好,但是有些地方还是比较难权衡,缓存对象大了,存储对象时的序列化工作很繁重,消耗大量cpu:那么切分成很小的部分吧,存取的次数变多了,redis客户端的交互次数上不去,这是一个矛盾.要是有一个客户端能支持更多的交互次数,那么在完成既定指标的前提下,岂不是可以让我们的建模工作变的更宽松一些? 于是参照redis协议,花了5天时间,做了一个具备基本功能的redis客户端.它的特性: 1.支持异步调用,在getA之后不用等结果,能继续getB,getC,等等.

java服务器与linux c客户端之间udp通信

java服务器和 linux c客户端采用udp协议互相通信,最关键的点是数据结构的统一.比如说,在c中一个char型 是8bit,在java中,char 是16bit,所以c和java的char类型不能直接互相转换.在本例程中,c的char 类型和 java的byte类型,两个数据类型都是8bit,这样就保证了数据正确传输的基本条件之一. java服务器代码如下: import java.io.*; import java.lang.*; import java.net.*; public c

Java 利用 Socket 实现服务器客户端聊天

Socket是网络编程中最基本的通信接口,常用的网络辅助类,比如URL等之类,其底层还是基于Socket来实现的. 而Socket,形象来说,就是连接通信的两端,比如这样 S<==>S,中间的通道就是网络了,而简单地利用Socket,我们就可以来实现一个简单的聊天功能 具体效果看下图: 这只是在本地中试用的效果,如果加上UI界面,其实就可以做成一个聊天的小应用了. 1. Server 端主要是利用ServerSocket的accept方法来等待客户端的连接,如果客户一直没有连接,则会在这里等待

【转载】java数据库操作

数据库访问几乎每一个稍微成型的程序都要用到的知识,怎么高效的访问数据库也是我们学习的一个重点,今天的任务就是总结java访问数据库的方法和有关API,java访问数据库主要用的方法是JDBC,它是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法,下面我们就具体来总结一下JDBC 一:Java访问数据库的具体步骤: 1 加载(注册)数据库  驱动加载就是把各个数据库提供的访问数据库的API加载到我们程序进来,加载JDBC驱动,并将其注册到Dri

ES7.4 学习日记——Java REST Client :连接到集群

1.ES7版本变化 废弃了type,没有类型的概念: 废弃TransportClient,只能使用restclient. 2.Maven依赖 连接客户端主要有Rest Low Level Client和Rest High Level Client两种可以使用,两者的主要区别在于: Rest Low Level Client:低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串.兼容所有ES版本.最小Java版本要求为1.7. Rest High Le