Redis、Memcached、MongoDB对比

xiaoxiao2021-02-28  10

Redis 简介: REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 支持服务器端的数据操作:支持多种数据结构和更丰富的数据操作; Memcached 简介: Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。 Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、 Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。 Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。 Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。 本质上,它是一个简洁的key-value存储系统。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 MongoDB 简介: MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。 Redis  支持服务器端的数据操作:支持多种数据结构和更丰富的数据操作; 性能对比:只使用单核; 内存使用效率对比:采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached; 数据持久化:支持 存储内存:所有数据并不是一直存储在内存中,当物理内存用完时,(很久没用)值会被交换持久化到磁盘,同时在内存中清除; 一致性:支持事务,比较脆,仅能保证事务中的操作按顺序执行,优于MongoDB; 应用场景: 较小数据量的性能和运算,适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序,例如:股票价格、数据分析、实时数据搜集、实时通讯。 Memcached 支持服务器端的数据操作:将数据拿到客户端来进行类似的修改再set回去(增加了网络IO的次数和数据体积); 性能对比:使用多核(在100k以上的数据中,Memcached性能要高于Redis); 内存使用效率对比:仅支持简单的key-value结构,存储的话,Memcached的内存利用率更高; 数据持久化:不支持 存储内存:所有数据存在内存中,是全内存的数据缓冲系统 一致性:支持事务操作; 应用场景: 适合大型的分布式系统、数据库前段缓存、服务器间数据共享(登录-(中间存储)-查询)。 不适合应用的场景:缓存的数据量比较小、缓存的数据需要持久化。 MongoDB性能对比:依赖内存,TPS非常高,Redis优于MongoDB 存储内存:所有数据存在内存中(适合大数据量存储,依赖系统虚拟内存,采用镜像文件存储;内存占用率比较高,官方建议独立部署 在64位系统) 一致性:不支持事务,靠客户端保证; 应用场景: 海量数据的访问效率提升  
转载请注明原文地址: https://www.6miu.com/read-1999975.html

最新回复(0)