NoSQL(Not Only SQL),意爲反SQL運動,是一項合新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢愈加高漲。它指的是非關係型的數據庫。隨着互聯網web2.0網站的興起,傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了不少難以克服的問題,而非關係型的數據庫則因爲其自己的特色獲得了很是迅速的發展。web
NoSQL是以key-value形式存儲,和傳統的關係型數據庫不同,不必定遵循傳統數據庫的一些基本要求,好比說遵循SQL標準(insert, delete,select)、ACID屬性(事務處理)、表結構等等,這類數據庫主要有如下特色:非關係型的、分佈式的、開源的、水平可擴展的。redis
支持事務比較簡單(不能知足如今的需求)sql
1.處理超大量的數據數據庫
2.運行在便宜的PC服務器集羣上緩存
3.擊碎了性能瓶勁(性能高,無須優化)服務器
1.對數據高併發讀寫(傳統數據庫上萬次的寫,硬盤I/O就會有問題)數據結構
2.對海量數據的高效率存儲和訪問(fielfeed:一個月有2.5億用戶動態)併發
3.對數據的高可擴展性和高可用性(nosql作分佈式,很簡單。沒有固定的表結構,迭代開發時)nosql
Redis is an open source,advanced key-value store.It is often referred to as a data structure server since keys can contain strings,hashes,lists,sets and sorted sets.分佈式
Redis是一個開源的,先進的key-value存儲。它一般被稱爲數據結構服務器,由於鍵能夠包含字符串,哈希,鏈表,集合和有序集合。
Redis是一個Key-Value存儲系統。它支持存儲的value類型不少,包括string(字符串)、list(鏈表)、set(集合)、zset(有序集合)。這些數據類型都支持push/pop、add/remove及取交集和並集及更豐富的操做,Redis支持各類不一樣方式的排序。爲了保證效率,數據都是緩存在內存中,它也能夠(方式一)週期性的把更新的數據寫入磁盤或者(方式二)把修改操做寫入追加的記錄文件(至關於log文件)。
鏈表能夠作成「棧」(先進後出)和「隊列」(先進先出)
Redis提供的API語言包括:C、C++、C#、Clojure、Common Lisp、Erlang、Haskell、Java、Javascript、Lua、Objective-C、Perl、PHP、Python、Ruby Scala、Go、Tcl。
目前全球最大的Redis用戶是新浪微博,在新浪有200多臺物理機,400多個端口正在運行着Redis,有+4G的數據在Redis上來爲微博用戶提供服務。
在新浪微博Redis的部署場景不少,大概分爲以下的兩種:
a.應用程序直接訪問Redis數據庫
b.應用程序直接訪問Redis,只有當Redis訪問失敗時才訪問MySQL
Redis數據庫提供多種靈活的數據結構和數據操做,爲不一樣的數據提供不一樣的數據類型。
1.取最新N個數據的操做
2.排行榜應用,取TOP N操做
3.須要精確設定過時時間的應用
4.計數器應用
5.Uniq操做,獲取某段時間全部數據排重值
6.實時系統,反垃圾系統
7.Pub/Sub構建實時消息系統
8.構建隊列系統
9.緩存