由于咱们项目上没有使用过两种,而我依旧对他们孰优孰劣比较好奇。redis
因此我逛了不少国内外的网站,获得了如下的结论。数据库
首先,Redis和Memcached是两款很是给力的、快速的、而且都是使用内存作分布式缓存数据的服务。对于提高咱们网站的的性能有很大的帮助(经过缓存数据、HTML片断或其余)。缓存
接下来,经过几点来进行对比:服务器
读写速度网络
- 都很是快。整体上显示,redis的速度与memcached几乎同样快。
内存的使用数据结构
- memcached:设置缓存空间大小,但当插入项时,守护进程就会自动增长空间大小。没有真正的方法来回收这些空间。全部的键均可能过时,能够刷新数据库,它仍然会使用配置的所有RAM。
- redis:Redis永远不会使用超出咱们设置的空间大小。而且它会智能返回不须要的空间,例如:我将100,000个2KB的字符串(200MB)存储在这两个字符串中。Memcached RAM的使用增长到225MB。Redis RAM的使用增长到228MB。在刷新了这两个数据以后,redis删除了29MB,而memcached则保持在225MB。
- 磁盘I/O:对于redis来讲,这是一个明显的优点,由于它在缺省状况下是这样作的,而且具备可配置的持久性。在没有第三方工具的状况下,Memcached没有向磁盘转储的机制。
memcached
- Memcached是一个简单易变的高速缓存服务器。它容许您将键/值对存储在一个值限制为1MB的字符串中。
- 咱们能够快速的访问这些值,这个速度指的是网络或内存带宽的饱和。
- 当您从新启动memcached时,数据就会消失。这对于缓存来讲是很好的。咱们不该该把重要的东西储存在那里。
redis
- Redis能够像memcached同样完成相同的工做,并且能够作得更好。
- Redis也能够充当缓存。它也能够存储键/值对。redis,能够达到512MB。
- 能够关闭持久性,而且在从新启动时也会丢失数据。
- 它的速度也很是快,常常受到网络或内存带宽的限制。
- Redis有集群支持,并带有高可用性的工具(redis-sentinel)。在过去的几年中,redis也成为了第三方工具的领导者。Redis Labs、亚马逊等公司提供了许多有用的Redis工具和服务。围绕redis的生态系统要大得多。大规模部署的数量如今可能比memcached更大。
Redis不只仅是一个缓存。它是一个内存中的数据结构服务器。分布式
Redis的文档比memcached更完善memcached
容灾工具
- 在快照模式中,忽然崩溃可能致使少许丢失的数据。若是您绝对须要确保没有数据丢失,不要担忧,redis也有AOF (Append Only File) 模式。
支持更多的数据类型性能
- Memcached仅限于字符串,但Redis做为一个数据结构服务器,能够提供多种不一样的数据类型。它还提供了所需的命令,以充分利用这些数据类型。例如:Strings、Hashes、Lists、Sets等等(查看数据类型官方文档)
事物性和原子性
- redis中的命令是原子性的,这意味当向redis写入一个值时,全部链接到redis的客户端均可以看到该值。
- 从技术上讲,memcached也是原子性的。
流水线
- Redis提供了一个名为“流水线”的特性。若是有许多想要执行的redis命令,可使用管道将它们发送到redis,而不是一次一次。
- 一般,当对redis或memcached执行命令时,每一个命令都是一个单独的请求/响应周期。经过使用管道,redis能够缓冲多个命令,并一次性执行全部命令,响应全部命令。
总结
memcached,它是一个强大的、简单的、稳定的、成熟的工具。甚至还有一些状况,它比redis快一些。
若是您已经在使用memcached缓存,若是它知足您的须要,那么就继续使用它。若是是新的项目,我推荐您使用redis。