项目 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具有更强大的数据结构,它不仅可以处理字符串整数,还可以处理二进制安全字符串,二进制安全字符串列表,二进制安全字符串集和有序集。
密钥长度 Memcached的密钥长度最多为250个字节。 Redis的密钥长度最大为2GB。