其实真正的Redis极限不如Memcache啊。

所以Memcache默认4线程,每个线程一个EventLoop,而Redis只有一个线程

对比一下其中的简单区别:

1. 在Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别的。

2. 且Redis不仅仅支持简单的k/v类型的数据,且同时还提供list,set,hash等数据结构的存储。

3. 而且Redis支持数据的备份的,即master-slave模式的数据备份的。

4. Redis支持数据的持久化的,可以将内存中的数据保持在磁碟中,重启的时候可以再次载入进行使用的。

误解中:

其实很多开发者都认为Redis不可能的比Memcached快,但是Memcached的完全基于内存,可而Redis具有持久化保存特性,即使是非同步的,Redis也不可能比Memcached快。但是测试结果基本是Redis占绝对优势的。

其实目前国产的haisql_memcache 更快的, 其中与memcache在指令集上的兼容, 查询性能已经比memcache的大约高出64%,在插入/更新性能比memcache高出30%,单核查询性能比Redis快 46.5%的。

最好总结:

人感觉Redis和Memcache在写入性能上面差别不大,读取性能上面尤其是批量读取性能上面Memcache全面胜出,当然Redis也有自己的优点:比如数据持久化、支持更多的数据结构(Set List ZSet)等。


如果单机单进程,在一般的业务场景下,redis的极限压力是不如memcache的。因为当一个业务跑到极限时,网路数据的传输等所需要的CPU就显得很重要了,redis的单线程模型就吃亏了。

只是一般的场景redis会在一台机器上多开几台,构成集群,这样可以把一台机器的CPU,内存使用到一个相对平衡的点。


推荐阅读:
相关文章