最近,一直在研究服务器性能优化和高并发请求访问,调研了非结构化数据(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)
分享到:
相关推荐
高级分布式数据库教程,nosql,mongodb,redis。非常好的分布式教程!
主流的三种分布式数据库比较Memcached Redis MongoDB对比
Redis+Memcached+MongoDB面试题精选06
MySql Oracle Redis Mycat MongoDB Memcached等数据库教程.zip
MySql Oracle Redis Mycat MongoDB Memcached数据库教程
分別記錄了memcached,redis,mongodb的安裝步驟和注意事項。
之前用过redis和MongoDB,但都是没有系统的学习,新公司用到memcached,所以去了解他们的区别和应用场景,方便理解。
分布式数据库面试专题系列:Memcached+Redis+MongoDB.zip
nosql视频教程,包含memcached、redis、mongodb等视频资料,百度网盘永久有效。
php7 NTS X86的一些扩展,其中包含redis mongodb memecached等省去了你到处寻找这些插件的烦恼。目前很多插件都还不支持php7
canal 的 mysql 与 redis/memcached/mongodb 的 nosql 数据实时同步方案
https://pan.baidu.com/s/13SBT5pRypTbKdlhBrGobFA
经典面试学习知识
6.保证对应关系的简单性:一个mysql表对应一个 redis实例(redis单线程,多实例保证分流不阻塞),关联关系数据交给接口业务 数据:mysql->binlog->MQ->redis(不过期、关闭RDB、AOF保证读写性能) (nosql数据仅用...
redis、mongodb、memcached、elasticsearch、zookeeper、ftp、CouchDB、docker、Hadoop 安装 pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 使用说明 python3 unauthorized-check....
带有Node,MySQL,MongoDB,NGINX,Memcached,Redis,Certbot和RabbitMQ映像的Docker Compose for Node项目 为什么选择NoDock? 映像非常简单,您为其提供了一个入口点并运行它。 对于非常简单/小的脚本,这很好,...
LNMP(Docker + Docker-compose + Nginx + MySQL5.7 + PHP7.2 + Redis5.0 + Memcached1.5 + Mongodb4.2) LNMP项目特点: 一键安装,简单实用 包含lnmp常用服务 各服务支持数据文件,配置文件,日志文件挂载 默认...
lnmp自动搭建Linux+Nginx+PHP+Mysql的运行环境,以及PHP程序相关的Memcached,redis, mongodb等软件的自动安装shell脚本。目前已在centos 6.x (64bit)测试正常。各软件列表:Nginx V1.9.5Tengine V2.1.1PHP V5.5.21与...