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位系统)
一致性:不支持事务,靠客户端保证;
应用场景:
海量数据的访问效率提升