Redis,MemCached,MongoDB 概述
調研項目主要有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 來自:http://blog.csdn.net/sunboy_2050/article/details/8552155