`
inosin
  • 浏览: 90952 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis和Memcached在Ruby上的性能评测(2)——读取性能

阅读更多
上一篇我们测试了memcached和redis在ruby上的写入性能,这次我们来测试一下它们的单纯读取性能。

测试环境不变,代码只需要进行一点点修改

memcached测试代码:
require 'rubygems'
require 'memcached'
@cache = Memcached.new('localhost:11211')
100000.times do |i|
  @cache.get "Test/#{rand(10000)}"
end


redis测试代码:
require 'rubygems'
require 'hiredis'
@cache = Hiredis::Connection.new
@cache.connect("127.0.0.1", 6379)
100000.times do |i|
  @cache.write ['GET', "Test/#{rand(10000)}"]
  @cache.read
end


测试结果:
													real	user	sys
memcached	1x GET pipeline		10000 times		0.783s	0.274s	0.285s
redis		1x GET pipeline		10000 times		1.114s	0.417s	0.375s
						
memcached	10x GET pipeline	10000 times		1.634s	2.969s	1.745s	
redis		10x GET pipeline	10000 times		3.360s	5.204s	2.077s		
						
memcached	20x GET pipeline	10000 times		3.163s	6.081s	3.587s	
redis		20x GET pipeline	10000 times		6.588s	10.634s	4.338s	

memcached	1x GET pipeline		100000 times		6.723s	1.786s	2.658s
redis		1x GET pipeline		100000 times		9.157s	1.644s	2.109s
						
memcached	10x GET pipeline	100000 times		12.237s	17.363s	14.919s	
redis		10x GET pipeline	100000 times		24.886s	16.058s	14.649s		
						
memcached	20x GET pipeline	100000 times		24.184s	35.505s	29.955s	
redis		20x GET pipeline	100000 times		47.903s	32.386s	29.155s	

memcached	1x GET pipeline		1000000 times		1m19.704s	15.792s	23.092s
redis		1x GET pipeline		1000000 times		1m30.097s	15.186s	24.438s
						
memcached	10x GET pipeline	1000000 times		1m57.467s	2m44.216s	2m23.563s
redis		10x GET pipeline	1000000 times		3m58.644s	2m5.219s	2m16.882s
	
memcached	20x GET pipeline	1000000 times		3m51.706s	5m32.873s	4m48.830s	
redis		20x GET pipeline	1000000 times		7m28.133s	4m5.430s	4m28.178s


测试结果和写入时的基本一致,包括速度和资源占用。由此我们可以得出它们各自的使用场景:

memcached:性能就是一切,很大的并发量和读写量,有专门的服务器作为缓存机,这时候似乎就只能选择memcached了。

而以下情况可以考虑用redis替代:
1、并发量很小或每秒的读写次数比较有限
2、没有单独的cache服务器,还有其他比较消耗cpu的服务在运行
3、内存不是很足够(可以用redis的hash来作替代方案,内存可以节约6/7,参考:http://redis.io/topics/memory-optimization)
4、希望cache复杂数据类型

所以,当只追求性能的时候选择memcached,其他时候都可以尝试使用redis替代~


分享到:
评论

相关推荐

    Redis安装包

    - 对比:与Redis相比,Memcached更专注于速度和简洁性,适合快速读取大量小数据量的场景。 3. `redis-3.0.0.gem` - 这是一个Ruby的Gem包,用于在Ruby环境中安装和管理Redis的Ruby客户端库。安装此gem包可以方便...

    Redis实战.pdf

    根据提供的性能测试结果,Redis 在一台配置为 Linux 2.6 和 Xeon X3320 2.5GHz 的服务器上可以实现 SET 操作每秒 110000 次、GET 操作每秒 81000 次的性能。这种出色的性能使得 Redis 成为了许多大型网站如 ...

    Memcached使用--使用

    它通过在内存中存储数据,为应用程序提供快速的数据访问,避免了频繁读取数据库导致的性能瓶颈。 **一、Memcached的基本概念** 1. **内存存储**:Memcached将所有数据存储在内存中,因此其速度非常快,但同时也...

    Redis-x64-3.0.500-rc1

    在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-...

    数据平台前端缓存技术方案Memcached-Redis.v1.0[汇编].pdf

    数据平台前端缓存技术方案主要涉及两种常用的内存缓存服务:Memcached和Redis。本文将重点解析Memcached的相关知识。 1. **Memcached基础** - **M的概念**:Memcached是一个高性能的分布式内存对象缓存系统,它...

    Redis API文档 全称:Remote Dictionary Server 远程字典服务

    区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...

    memcached-1.5.4

    它通过将数据存储在内存中,实现快速读取,避免了频繁的磁盘I/O操作。本文将详细介绍`memcached-1.5.4`版本的源码特点、编译过程以及相关知识。 1. **memcached简介** - `memcached`的核心设计理念是简单而高效,...

    Redis特性和应用场景.doc

    官方数据显示,它可以在普通Linux系统上实现每秒81000次读取和110000次写入。 - **持久化**:尽管数据存储在内存中,但Redis提供了一种持久化机制,如RDB(定期保存)和AOF(追加日志)。这使得在系统崩溃或重启后...

    redis做mysql缓存服务器(公司内部培训资料)

    读写分离的基本思路是将数据读取操作与数据写入操作分开处理,通常通过在不同的服务器上部署专门用于读或写的实例来实现。这种设计可以显著提高系统的整体性能,尤其是在高并发场景下。 1. **数据同步机制**: - ...

    memcached学习资料

    2. **Memcached vs Redis**:Memcached更轻量级,适合简单的缓存需求;Redis功能更强大,适用于复杂场景。 总结,memcached是高效、轻量级的缓存解决方案,适用于需要快速响应和高并发的Web应用。通过搭建集群和...

    memcached

    Memcached是一款开源、高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升网站或应用的响应速度。它通过将数据存储在内存中,实现快速访问,从而显著提高了数据读取效率。Memcached的设计理念是...

    redis-2.4.5-win32-win64

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,由Salvatore Sanfilippo开发,最初是为了解决Memcached在某些场景下的性能瓶颈而设计的。它以其丰富的数据结构、持久化机制和发布订阅功能,在...

    redis-core-java.zip

    区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...

    redis实战中文 pdf

    - **特点**: memcachedb 结合了memcached的高性能和NoSQL数据库的功能,支持ACID事务。 - **应用场景**: 适用于需要高性能缓存和简单事务支持的应用场景。 ##### 1.1.4 Cassandra - **特点**: Cassandra 是一种...

    redis实战中文版

    - **示例2**: 用于实时监控和分析系统性能指标。 #### 三、初识Redis ##### 1.3.1 数据类型 - **String**: 最基本的数据类型,可以用来存储任何数据。 - **Hash**: 用于存储键值对集合。 - **List**: 有序的字符...

    memcached安装包及测试

    - **分布式内存存储**:Memcached 不存储在硬盘上,而是利用服务器的内存,以减少对硬盘I/O操作,从而提高性能。 - **键值对存储**:数据以键值对的形式存储,便于快速查找和操作。 - **简单协议**:使用基于文本的...

    Redis实战 中文完成版

    Key-Value Store因其简单的数据模型和高效的读写性能,在处理大规模数据方面表现突出。 ##### 1.2.2 云存储 云存储要求系统具有高度的可扩展性和灵活性。Key-Value Store能够轻松地进行水平扩展,适应不断变化的...

    Ruby-SecondLevelCacheActiveRecord的writethrough和readthrough缓存库

    1. 分布式缓存支持:库可能兼容多种分布式缓存服务,如Redis、Memcached等,以便于扩展和适应不同的环境需求。 2. 类型和查询级别的缓存:缓存不仅可以针对整个类,还可以根据特定的查询条件进行粒度更细的缓存,以...

    memcached.zip

    3. **性能**:在纯缓存场景下,Memcached由于操作简单,可能在速度上有优势;但在复杂数据结构和持久化需求下,Redis表现更佳。 4. **复制与集群**:Redis支持主从复制和哨兵模式,可以构建高可用的集群;Memcached...

    memcached.rar

    Memcached是一款开源、高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升网站或应用的响应速度。它通过将数据存储在内存中,实现快速访问,从而显著提高了数据读取效率。Memcached的设计理念是...

Global site tag (gtag.js) - Google Analytics