Redis,MemCached,MongoDB 概述
来源:互联网 发布:低头族车祸数据 编辑:程序博客网 时间:2024/06/14 10:18
最近,一直在研究服务器性能优化和高并发请求访问,调研了非结构化数据(NoSQL)和内存加速(Cache),对老平台服务进行重新架构设计,力求节约成本10000美金/每月。
调研项目主要有Redis、 MemCached、 MongoDB,以及Amazon的DynamoDB
Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。
1) 数据模型
作为Key-value型数据库,Redis也提供了键(Key)和值(Value)的映射关系。除了常规的数值或字符串,Redis的键值还可以是以下形式之一:
Lists (列表)
Sets (集合)
Sorted sets (有序集合)
Hashes (哈希表)
键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、差集等高级原子操作;同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。
2) 持久化:
Redis通常将数据存储于内存中,或被配置为使用虚拟内存。
通过两种方式可以实现数据持久化:使用快照的方式,将内存中的数据不断写入磁盘;或使用类似MySQL的日志方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。
3) 性能同步:
Redis支持将数据同步到多台从库上,这种特性对提高读取性能非常有益。相比需要依赖磁盘记录每个更新的数据库,基于内存的特性无疑给Redis带来了非常优秀的性能,读写操作之间有显著的性能差异。
4) API 语言
支持C、 C++、 C#、 Java、 Javascript、 Lua、 Objective-C、 Perl、 PHP、 Python、 Ruby、 Go等语言,更多请见:Redis 官网
-------------------------------------------------------
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
1) 事件处理
memcached使用libevent库,能在Linux、BSD、Solaris等操作系统上发挥其高性能。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。
2)数据存储
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used,最近最少使用)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
3) API语言
支持 C、C#、 C++、 Java、Perl、 PHP、 Python、 Ruby、 Lua等语言,更多请见: Memcached Clients
--------------------------------------------------------
MongoDB 是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB服务端可运行在Linux、Windows或IOS平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB,64位平台则非常大。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
1) 特点:高性能、易部署、易使用,存储数据非常方便
2) 功能:面向集合存储,易存储对象类型的数据;支持动态查询,支持完全索引,包含内部对象;支持复制和故障恢复;使用高效的二进制数据存储,包括大型对象(如视频等);自动处理碎片,以支持云计算层次的扩展性
3) 格式:文件存储格式为BSON(一种JSON的扩展);可通过网络访问
4) API语言:C、C#、 C++、Java、JavaScript、 PHP、Ruby、Python、Perl等,更多请见: MongoDB Home
参考推荐:
redis memcache 比较(实验数据)
Memcache和Redis对比
Redis与Memcached的比较(官方)
关于mongodb ,redis,memcache(CSDN)
转自:http://blog.csdn.net/ithomer/article/details/8552155
- Redis,MemCached,MongoDB 概述
- Redis,MemCached,MongoDB 概述
- Redis,MemCached,MongoDB 概述
- Redis,MemCached,MongoDB 概述
- Redis,MemCached,MongoDB 概述
- Memcached, Redis, MongoDB区别
- Memcached, Redis, MongoDB区别
- Memcached, Redis, MongoDB区别
- Memcached, Redis, MongoDB对比
- redis、memcached、mongoDB 对比
- redis、memcached、mongoDB 对比
- Memcached, Redis, MongoDB区别
- Memcached, Redis, MongoDB区别
- Memcached, Redis, MongoDB对比
- Memcached, Redis, MongoDB区别
- Redis+MongoDB+Memcached
- Memcached, Redis, MongoDB区别
- Memcached, Redis, MongoDB区别
- 创建LVM报错:Can't initialize physical volume "/dev/cciss/c0d1p1" of volume group"VolGroup01" without -ff
- 利用CSS、JavaScript及Ajax实现图片预加载方法
- 问题解决:listview多次调用addHeaderView和addFooterView
- 将无线网卡改成WIFI热点( by quqi99 )
- iOS 7: 如何为iPhone 5S编译64位应用。
- Redis,MemCached,MongoDB 概述
- 代码实现删除浏览器Cookie,历史记录
- Documentation/timers/timer_stats
- 使用PackageManager和ResolverInfo
- 个人觉得一篇很好的,初学动态墙纸的文章【转】
- jboss和tomcat的get请求乱码配置
- Head First设计模式-命令模式
- linux下IIC驱动开发分析
- OCP-1Z0-051-V9.02-43题