Redis Memcached 区别

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

热门文章

优秀文章