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

Redis和Memcached在Ruby上的性能评测(1)——写入性能

阅读更多
因为memcached只支持String数据类型,所以本文只比较String,redis支持的其他数据类型不做评测,另外关闭了redis持久化特性!因为redis的持久化是另起后台任务进行,所以数据量小的时候不会对测试结果有明显影响。

测试环境:
引用
REDHAT6.0 x86_64
Ruby Enterprise Edition version 1.8.7-2010.02
memcached 1.4.4
redis-2.4.6
Gems:
memcached(1.3.5)
hiredis (0.4.4)


相关配置:
memcached:-m 1024 -c 1024 -t 8
内存:1G,并发连接:1024,线程数:8

redis:默认配置,其中持久化数据部分关闭
loglevel warning
#save 900 1
#save 300 10
#save 60 10000
rdbcompression yes

测试方式:随即生成1000byte内的字符串,写入10万次。
memcached代码:
require 'rubygems'
require 'memcached'
@cache = Memcached.new('localhost:11211')
100000.times do |i|
  @cache.set "Test/#{i}", '0'*rand(1000)
end


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


测试结果:
													real	user	sys
memcached	1x SET pipeline		10000 times		0.937s	0.305s	0.376s
redis		1x SET pipeline		10000 times		1.218s	0.517s	0.318s
						
memcached	10x SET pipeline	10000 times		1.954s	3.311s	1.794s	
redis		10x SET pipeline	10000 times		3.578s	5.610s	2.229s		
						
memcached	20x SET pipeline	10000 times		3.724s	6.789s	3.547s	
redis		20x SET pipeline	10000 times		7.024s	11.409s	4.259s	

memcached	1x SET pipeline		100000 times		8.434s	2.849s	3.165s
redis		1x SET pipeline		100000 times		10.088s	3.315s	2.979s
						
memcached	10x SET pipeline	100000 times		15.823s	21.094s	14.900s	
redis		10x SET pipeline	100000 times		26.971s	20.364s	14.673s		
						
memcached	20x SET pipeline	100000 times		28.992s	42.706s	29.173s	
redis		20x SET pipeline	100000 times		50.189s	40.969s	27.939s	

memcached	1x SET pipeline		1000000 times		1m16.988s	26.652s	27.189s
redis		1x SET pipeline		1000000 times		1m39.096s	25.127s	28.373s
						
memcached	10x SET pipeline	1000000 times		2m30.850s	3m22.393s	2m26.716s
redis		10x SET pipeline	1000000 times		4m19.509s	2m46.179s	2m18.871s
	
memcached	20x SET pipeline	1000000 times		6m22.883s	9m2.995s	6m5.845s	
redis		20x SET pipeline	1000000 times		12m55.556s	9m6.064s	6m56.633s


结论:
1、memcached的写入性能还是明显要高于redis,特别是多并发的时候,优势更明显!
2、redis server的占用一般在50%左右,memcached server的CPU占用150%左右
3、从总体CPU占用率上来说,redis的优势很明显,4核CPU的使用率没有超过20%,而memcached的CPU一直在50%左右。


1
0
分享到:
评论
1 楼 lmxbitihero 2014-07-11  
别忘了redis是写入磁盘的啊

相关推荐

    Redis7.0.11版本安装包

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

    redis是一个key-value存储系统 和Memcached类似,它支持存储的value类型相对更多

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

    redis版本2.0安装包

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

    redis内置安装步骤

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

    Redis-x64-3.0.500-rc1

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

    Redis中文手册

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

    Redis实战.pdf

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

    Redis-x64-3.2.100.zip

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

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

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

    Django开发的Redis管理平台Repoll,旨在提高企业对redis实例平台化管理,助力运维转型 .zip

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

    go开发的redis管理web端.zip

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

    Redis特性和应用场景.doc

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

    redis-core-java.zip

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

    Memcached内存分析、调优、集群

    Memcached与其他key-value存储系统(如Redis、Voldemort等)相比,在集群支持、性能和应用场景上存在差异。例如,Memcached更适用于读多写少的场景,而Redis则提供了更为丰富的数据类型和持久化选项。 #### 6. ...

    redis实战中文 pdf

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

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

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

    Redis实战 中文完成版

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

    Ruby-SecondLevelCacheActiveRecord的writethrough和readthrough缓存库

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

    memcached -win32

    `memcached` 相较于 Redis 等其他缓存系统,更注重简单性和高性能,但功能相对较少。在选择缓存系统时,应根据项目需求来决定是否适合使用 `memcached`。 总之,`memcached` 是一款优秀的缓存解决方案,尤其在...

Global site tag (gtag.js) - Google Analytics