Redis与Memcached有什么区别(答案在这里。。。)

Comparison Index Memcached Redis
什么是 Memcached是内存中的键值存储, 最初用于缓存目的。 Redis是内存中的数据结构存储, 用作数据库, 缓存和消息代理。
Description 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月发布。
License Memcached是免费的开放源代码。 Redis也是免费和开源的。
Cloud-based No No
Implementation language 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信息, Perl, PHP, Prolog, 纯数据, Python, R, Rebol, Ruby, Rust, Scala, Scheme, Smalltalk, Tcl
服务器端脚本 No Lua
Triggers No No
Partitioning methods None Sharding
复制方式 None 主从复制
MapReduce No No
外键 No No
交易概念 No 乐观锁定, 原子执行命令块和脚本
Concurrency Yes Yes
Durability No Yes
User concepts Yes 简单的基于密码的访问控制
Installation Memcached的安装和运行有点复杂。 安装Redis非常容易。无需依赖。
Memory Usage 与Redis相比, MemcacheD的内存效率更高, 因为它消耗的元数据存储资源相对较少。 仅在使用Redis哈希之后, Redis才具有更高的内存效率。
Persistence Memcached不使用持久数据。使用Memcached时, 重新启动可能会丢失数据, 并且重建缓存是一个昂贵的过程。 Redis可以处理持久数据。默认情况下, 它至少每2秒将数据同步到磁盘一次, 以提供可选的可调整数据持久性, 以在计划关闭或意外故障后引导缓存。尽管我们倾向于将缓存中的数据视为易失性和瞬态数据, 但将数据持久保存到磁盘在缓存场景中可能非常有价值。
Replication Memcached不支持复制。 Redis支持主从复制。
存储类型 MemcacheD将变量存储在其内存中, 并直接从服务器内存中检索所有信息, 而无需再次访问数据库。 Redis就像驻留在内存中的数据库。它从数据库中执行(读取和写入)键/值对以返回结果集。这就是为什么开发人员将其用于实时指标和分析。
执行速度和性能 MemcacheD非常适合处理高流量的网站。它可以一次读取许多信息, 并以出色的响应时间给你回馈。 Redis既无法处理高流量, 又无法进行大量写入。
Data Structure MemcacheD在其数据结构中仅使用字符串和整数。因此, 你保存的所有内容都可以是字符串或整数。这很复杂, 因为使用整数, 唯一可以做的数据操作就是加或减它们。如果需要保存数组或对象, 则必须先对其进行序列化, 然后再保存。要读回它们, 你需要取消序列化。 Redis具有更强大的数据结构, 它不仅可以处理字符串整数, 还可以处理二进制安全字符串, 二进制安全字符串列表, 二进制安全字符串集和排序集。
键长 Memcached的密钥长度最大为250个字节。 Redis的密钥长度最大为2GB。

    推荐阅读