Redis vs Memcached

2025 年 5 月 18 日 | 3 分钟阅读
比较索引MemcachedRedis
是什么Memcached 是一个内存中的键值存储,最初用于缓存目的。Redis 是内存数据结构存储,用作数据库、缓存和消息代理。
描述MemcacheD 简单、设计简单但功能强大。 其简单的设计促进了快速部署、易于夸大,并解决了许多与大型数据缓存相关的问题。 它具有内置的 API,该 API 提供了跨多个机器的大型哈希表,并使用内部内存管理来提供更高的效率。 MemcacheD 仅支持 String 数据类型,非常适合存储只读数据。 Memcached 是一个易失性内存中的键值来源。 它是多线程的,主要用于缓存对象。Redis 是一个开源的内存数据结构存储,也可以用作数据库和缓存。 它几乎支持所有类型的数据结构,例如字符串、哈希、列表、集合、带有范围查询的排序集合、位图、超日志和通过半径查询的地理空间索引。 Redis 也可以用于消息传递系统,用作发布/订阅。
主要数据库模型Memcached 遵循键值存储数据库模型。Redis 也遵循键值存储数据库模型。
开发者Memcached 由 Danga Interactive 开发。Redis 由 Salvatore Sanfilippo 开发。
首次发布Memcached 最初于 2003 年发布。Redis 最初于 2009 年发布。
当前版本Memcached 的当前版本是 1.5.1,于 2017 年 8 月发布。Redis 的当前版本是 4.0.2,于 2017 年 9 月发布。
许可Memcached 是免费和开源的。Redis 也是免费和开源的。
基于云不能不能
实现语言Memcached 用 C 语言实现。Redis 也用 C 语言实现。
服务器操作系统FreeBSD Linux OS X Unix WindowsBSD Linux OS X Windows
支持的编程语言.Net、C、C++、ColdFusion、Erlang、Java、Lisp、Lua、OCaml、Perl、PHP、Python、RubyC、C#、C++、Clojure、Crystal、D、Dart、Elixir、Erlang、Fancy、Go、Haskell、Haxe、Java、JavaScript (Node.js)、Lisp、Lua、MatLab、Objective-C、OCaml 信息、Perl、PHP、Prolog、纯数据、Python、R、Rebol、Ruby、Rust、Scala、Scheme、Smalltalk、Tcl
服务器端脚本不能Lua
触发器不能不能
分区方法分片
复制方法主从复制
MapReduce不能不能
外键不能不能
事务概念不能乐观锁,命令块和脚本的原子执行
并发性是的是的
耐用性不能是的
用户概念是的基于简单密码的访问控制
安装Memcached 的安装和运行有点复杂。安装 Redis 容易得多。 无需依赖项。
内存使用MemcacheD 比 Redis 更节省内存,因为它消耗的元数据内存资源相对较少。Redis 更节省内存,仅在您使用 Redis 哈希之后。
持久化Memcached 不使用持久数据。 使用 Memcached 时,数据可能会因重启而丢失,重建缓存是一个代价高昂的过程。Redis 可以处理持久数据。 默认情况下,它每 2 秒至少将数据同步到磁盘一次,提供可选的且可调的数据持久性,旨在在计划关闭或意外故障后启动缓存。 虽然我们倾向于将缓存中的数据视为易失性和瞬态数据,但在缓存场景中,将数据持久化到磁盘可能非常有用。
复制Memcached 不支持复制。Redis 支持主从复制。
存储类型MemcacheD 将变量存储在其内存中,并直接从服务器内存中检索任何信息,而不是再次访问数据库。Redis 就像一个驻留在内存中的数据库。 它从其数据库中执行(读取和写入)键/值对以返回结果集。 这就是开发人员将其用于实时指标和分析的原因。
执行速度和性能MemcacheD 非常适合处理高流量网站。 它一次可以读取很多信息,并以很短的响应时间返回给您。Redis 既不能处理读取时的高流量,也不能处理繁重的写入。
数据结构MemcacheD 在其数据结构中仅使用字符串和整数。 因此,您保存的所有内容要么是字符串,要么是整数。 它很复杂,因为对于整数,您唯一可以进行的数据操作是添加或减去它们。 如果您需要保存数组或对象,则必须先对它们进行序列化,然后才能保存它们。 要读回它们,您将需要反序列化。Redis 具有更强大的数据结构,不仅可以处理字符串整数,还可以处理二进制安全字符串、二进制安全字符串列表、二进制安全字符串集合和排序集合。
键长度Memcached 的键长度最长为 250 字节。Redis 的键长度最长为 2GB。

下一主题Redis 与 MongoDB