上一篇我们测试了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相比,Memcached更专注于速度和简洁性,适合快速读取大量小数据量的场景。 3. `redis-3.0.0.gem` - 这是一个Ruby的Gem包,用于在Ruby环境中安装和管理Redis的Ruby客户端库。安装此gem包可以方便...
根据提供的性能测试结果,Redis 在一台配置为 Linux 2.6 和 Xeon X3320 2.5GHz 的服务器上可以实现 SET 操作每秒 110000 次、GET 操作每秒 81000 次的性能。这种出色的性能使得 Redis 成为了许多大型网站如 ...
它通过在内存中存储数据,为应用程序提供快速的数据访问,避免了频繁读取数据库导致的性能瓶颈。 **一、Memcached的基本概念** 1. **内存存储**:Memcached将所有数据存储在内存中,因此其速度非常快,但同时也...
在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-...
数据平台前端缓存技术方案主要涉及两种常用的内存缓存服务:Memcached和Redis。本文将重点解析Memcached的相关知识。 1. **Memcached基础** - **M的概念**:Memcached是一个高性能的分布式内存对象缓存系统,它...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
它通过将数据存储在内存中,实现快速读取,避免了频繁的磁盘I/O操作。本文将详细介绍`memcached-1.5.4`版本的源码特点、编译过程以及相关知识。 1. **memcached简介** - `memcached`的核心设计理念是简单而高效,...
官方数据显示,它可以在普通Linux系统上实现每秒81000次读取和110000次写入。 - **持久化**:尽管数据存储在内存中,但Redis提供了一种持久化机制,如RDB(定期保存)和AOF(追加日志)。这使得在系统崩溃或重启后...
读写分离的基本思路是将数据读取操作与数据写入操作分开处理,通常通过在不同的服务器上部署专门用于读或写的实例来实现。这种设计可以显著提高系统的整体性能,尤其是在高并发场景下。 1. **数据同步机制**: - ...
2. **Memcached vs Redis**:Memcached更轻量级,适合简单的缓存需求;Redis功能更强大,适用于复杂场景。 总结,memcached是高效、轻量级的缓存解决方案,适用于需要快速响应和高并发的Web应用。通过搭建集群和...
Memcached是一款开源、高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升网站或应用的响应速度。它通过将数据存储在内存中,实现快速访问,从而显著提高了数据读取效率。Memcached的设计理念是...
Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,由Salvatore Sanfilippo开发,最初是为了解决Memcached在某些场景下的性能瓶颈而设计的。它以其丰富的数据结构、持久化机制和发布订阅功能,在...
区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类...
- **特点**: memcachedb 结合了memcached的高性能和NoSQL数据库的功能,支持ACID事务。 - **应用场景**: 适用于需要高性能缓存和简单事务支持的应用场景。 ##### 1.1.4 Cassandra - **特点**: Cassandra 是一种...
- **示例2**: 用于实时监控和分析系统性能指标。 #### 三、初识Redis ##### 1.3.1 数据类型 - **String**: 最基本的数据类型,可以用来存储任何数据。 - **Hash**: 用于存储键值对集合。 - **List**: 有序的字符...
- **分布式内存存储**:Memcached 不存储在硬盘上,而是利用服务器的内存,以减少对硬盘I/O操作,从而提高性能。 - **键值对存储**:数据以键值对的形式存储,便于快速查找和操作。 - **简单协议**:使用基于文本的...
Key-Value Store因其简单的数据模型和高效的读写性能,在处理大规模数据方面表现突出。 ##### 1.2.2 云存储 云存储要求系统具有高度的可扩展性和灵活性。Key-Value Store能够轻松地进行水平扩展,适应不断变化的...
1. 分布式缓存支持:库可能兼容多种分布式缓存服务,如Redis、Memcached等,以便于扩展和适应不同的环境需求。 2. 类型和查询级别的缓存:缓存不仅可以针对整个类,还可以根据特定的查询条件进行粒度更细的缓存,以...
3. **性能**:在纯缓存场景下,Memcached由于操作简单,可能在速度上有优势;但在复杂数据结构和持久化需求下,Redis表现更佳。 4. **复制与集群**:Redis支持主从复制和哨兵模式,可以构建高可用的集群;Memcached...
Memcached是一款开源、高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升网站或应用的响应速度。它通过将数据存储在内存中,实现快速访问,从而显著提高了数据读取效率。Memcached的设计理念是...