zoukankan      html  css  js  c++  java
  • Redis Vs Memcached

    因为我们项目上没有使用过两种,而我依旧对他们孰优孰劣比较好奇。

    所以我逛了很多国内外的网站,得到了以下的结论。

    首先,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更完善

    容灾

    • 在快照模式中,突然崩溃可能导致少量丢失的数据。如果您绝对需要确保没有数据丢失,不要担心,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。

    非常感谢您的耐心观看,您的关注是我最大的动力! 不积跬步无以至千里,不积小流无以成江海!
  • 相关阅读:
    HTML 特殊符号编码对照表
    jsp include file(变量) 动态加载文件
    PHP判断键值数组是否存在,使用empty或isset或array_key_exists
    [js方法pk]之instanceof() vs isPrototypeOf() hasOwnProperty() vs propertyIsEnumerable()
    js正则表达式语法 修正
    js正则表达式语法
    js正则表达式语法
    ASP中有关字符编码转换的几个有用函数
    详解js中typeof、instanceof与constructor
    事件穿透父层 直达子层 pointer-events:none
  • 原文地址:https://www.cnblogs.com/sheldon-blog/p/8110919.html
Copyright © 2011-2022 走看看