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。 |