代码:
require "rubygems"
require 'eventmachine'
require "benchmark"
require "memcache"
cache_proc = proc{|cache,n|
proc{
n.times do |t|
cache.set "a", 'hello'
cache.set "b", 'hi'
cache.set "c", 'how are you?'
cache.set "d", ''
# => EM client's get() must require a block,nnd.
cache.get("a"){}
cache.get("missing"){}
cache.set("missing", 'abc')
cache.get("missing"){}
cache.delete("missing")
cache.get("missing"){}
end
}
}
# => memcache-client v1.7.0
cache_client = MemCache.new('localhost:10001')
# => Eventmachine Memcache Protocol
EM.run{
cache_em = EM::P::Memcache.connect 'localhost', 10001
Benchmark.bmbm do |x|
x.report('EM',&cache_proc.call(cache_em,10000))
x.report('memcache-client',&cache_proc.call(cache_client,10000))
end
}
测试结果:
引用
Rehearsal ---------------------------------------------------
EM 4.350000 0.140000 4.490000 ( 4.532573)
memcache-client 34.970000 5.760000 40.730000 ( 42.958925)
----------------------------------------- total: 45.220000sec
user system total real
EM 12.030000 0.180000 12.210000 ( 12.330900)
memcache-client 57.510000 6.220000 63.730000 ( 65.870205)
Eventmachine要比Memcache-client快好多啊,这个基于反射模型的中间件可以好好的发掘下潜力了.
分享到:
相关推荐
标题"memcached服务端已经多个客户端"指出我们关注的是memcached缓存系统,它包括服务端和多个客户端。这通常意味着我们可以期待一个完整的环境,用于学习、测试或部署memcached,包括服务器组件以及可以与其交互的...
每个客户端库都实现了基本的Memcached操作,如`get`、`set`、`delete`和`increment/decrement`。此外,它们还可能提供额外的功能,如连接池管理、持久化连接、事务支持、键的过期策略等。在选择客户端时,应考虑其...
本文将详细介绍这两个组件以及如何在Redhat 5系统上配置和使用它们。 **Memcached** Memcached是一款高性能、分布式内存对象缓存系统。它设计用于加速动态Web应用,通过在内存中存储数据和对象来减少数据库访问,...
在这个压缩包中,我们有两个文件,分别是针对64位系统的`memcached-win64-1.4.4-14.zip`和针对32位系统的`memcached-win32-1.4.4-54.zip`。 1. **Memcached的介绍** Memcached最初由Danga Interactive开发,后来...
- Memcached 以守护程序的方式运行在一个或多个服务器上,始终准备接收客户端的连接请求。 2. **基于 key 的数据存储:** - 每个存储在 Memcached 中的对象都有一个唯一的标识符 key,所有的数据存取操作都通过这...
这两个版本分别适用于不同架构的Windows操作系统,32位版本适用于32位操作系统,而64位版本则适用于64位操作系统。 **安装步骤** 1. **下载**: 首先,你需要从官方网站或可信的第三方源下载适合你系统架构的...
4. **接口支持**:memcached提供多种语言的客户端库,如PHP、Python、Java、Ruby等,方便开发人员在各种编程环境中使用。 5. **Windows安装**:在Windows上,通常通过下载编译好的二进制文件进行安装,包括64位和32...
使用Homebrew安装这两个库: ``` brew install libevent brew install openssl ``` 3. **下载Memcached源码**:从官方网站或者GitHub仓库下载最新的Memcached源代码。在压缩包文件中,你可能已经有了预打包的...
Memcache和Memcached是两种广泛使用的分布式内存缓存系统,它们在处理高并发Web应用程序时,可以极大地提高数据访问速度,降低数据库负载。标题中的"memcache memcached-1.2.6-win32-bin"可能指的是一个针对Windows ...
- **Python** Python社区维护了pylibmc和python-memcached两个客户端库,方便Python应用与Memcached交互。 - **Ruby** Ruby提供了dalli gem,它是官方推荐的Ruby客户端,支持多线程和连接池。 - **Perl** Perl社区...
Memcached支持多种编程语言的客户端库,例如PHP、Python、Java、Ruby、C++等,开发者可以方便地在应用程序中集成。以PHP为例,使用`memcache`或`memcached`扩展,可以进行增删查改操作: ```php $memcached = new ...
数据平台前端缓存技术方案主要涉及两种常用的内存缓存服务:Memcached和Redis。本文将重点解析Memcached的相关知识。 1. **Memcached基础** - **M的概念**:Memcached是一个高性能的分布式内存对象缓存系统,它...
这里以Ruby环境为例,安装`cached_model`和`memcache-client`这两个Gem: ```bash gem install cached_model --no-rdoc --no-ri --with-include-dependencies gem install memcache-client --no-rdoc --no-ri --with...
Memcached支持多种编程语言的客户端库,如Python、Java、PHP、Ruby等,这使得开发者可以根据项目语言选择合适的客户端。客户端库通常提供简单的API,用于设置、获取和删除缓存中的数据。在实际应用中,我们需要合理...
文件名"memcached32λ64λ"和"memcached32位64位"可能是两个不同的文件,分别对应32位和64位版本的Memcached安装程序或可执行文件。"λ"可能是因为输入错误,实际应该是"位"的拼音缩写。 **详细知识点:** 1. **...
"2部操作即可"可能是指只需解压文件和执行启动程序两个简单步骤就能运行memcached服务。 **memcached核心知识点** 1. **分布式缓存**: Memcached是一个分布式内存缓存系统,可以跨多台服务器分配数据,减轻单一...
MemCache和MemCached这两个术语经常被混淆,但它们实际上有些许区别。 MemCache是早期的一个缓存系统,主要用于PHP应用,而MemCached(注意额外的“d”)是由Danga Interactive开发的开源软件,现在更广泛地被使用...
- **部署策略**: 对于32位系统,可以考虑在同一台机器上启动多个memcached实例,充分利用内存资源。 - **监控与管理**: 使用telnet或专门的管理工具,可以实时监控和调整memcached的运行状态。 综上所述,...
2. **分布式**:Memcached通过哈希算法将数据分散到多个服务器上,实现数据的分布式存储,解决了单一服务器的内存限制问题。 3. **内存存储**:由于数据存储在内存中,读取速度极快,但数据易失,适合短期存储不常...
客户端通过TCP/IP协议与memcached通信,每个数据对象通过唯一的键(key)进行存取。由于数据存储在内存中,存取速度极快,但缺点是服务重启后数据会丢失。 **五、PHP作为memcached客户端** PHP可以通过两种方式与...