*redis和memcached比较

项目 Memcached Redis
定义 Memcached 是内存中的键值存储,最初用于缓存目的。 Redis 是内存中的数据结构存储,用作数据库,缓存和消息代理。
描述 MemcacheD 很简单,设计简单但功能强大。其简单的设计促进了快速部署,易于夸大,并解决了与大数据缓存相关的许多问题。它有内置的 API,提供分布在多台机器上的非常大的哈希表,并使用内部内存管理来提供更高的效率。MemcacheD 仅支持 String 数据类型,它是存储只读数据的理想选择。Memcached 是一个易失性的内存中键值来源。它是多线程的,主要用于缓存对象。 Redis 是一个开源的内存数据结构存储,也可以用作数据库和缓存。它支持几乎所有类型的数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志和通过半径查询的地理空间索引。Redis 还可用于用作 pub / sub 的消息传递系统。
主数据库模型 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 Windows BSD Linux OS X Windows
支持的编程语言 .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,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 就像一个驻留在内存中的数据库。它从其数据库执行(读取和写入)键/值对以返回结果集。这就是 develepors 用于实时指标和分析的原因。
执行速度和性能 MemcacheD 非常适合处理高流量网站。它可以一次读取许多信息,并在很长的响应时间内返回。 Redis 既不能处理读取时的高流量,也不能处理繁重的写入。
数据结构 MemcacheD 在其数据结构中仅使用字符串和整数。因此,您保存的所有内容都可以是字符串或整数。它很复杂,因为对于整数,您可以做的唯一数据操作是添加或减去它们。如果需要保存数组或对象,则必须先将它们序列化然后保存。要阅读它们,您需要取消序列化。 Redis 具有更强大的数据结构,它不仅可以处理字符串整数,还可以处理二进制安全字符串,二进制安全字符串列表,二进制安全字符串集和有序集。
key 长度 Memcached 的 key 长度最多为 250 个字节。 Redis 的 key 长度最大为 2GB。