Redis 簡介
1.1. Redis簡介

Redis 是完全開源免費的,遵守BSD協議,是一個高性能(NOSQL)的key-value數據庫,Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。(Vmware在資助著redis項目的開發和維護)
1.3. NoSQL介紹
NoSQL,泛指非關系型的數據庫。隨著互聯網web2.0網站的興起,傳統的關系數據庫在應付web2.0網站,特別是超大規模和高并發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數據庫則由于其本身的特點得到了非常迅速的發展。NoSQL數據庫的產生就是為了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。
1.3.1. NoSQL數據庫的四大分類
鍵值(Key-Value)存儲數據庫
這一類數據庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。Key/value模型對于IT系統來說的優勢在于簡單、易部署。但是如果DBA只對部分值進行查詢或更新的時候,Key/value就顯得效率低下了。[3] 舉例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存儲數據庫
這部分數據庫通常是用來應對分布式存儲的海量數據。鍵仍然存在,但是它們的特點是指向了多個列。這些列是由列家族來安排的。如:Cassandra, HBase, Riak.
文檔型數據庫
文檔型數據庫的靈感是來自于Lotus Notes辦公軟件的,而且它同第一種鍵值存儲相類似。該類型的數據模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型數據庫可 以看作是鍵值數據庫的升級版,允許之間嵌套鍵值。而且文檔型數據庫比鍵值數據庫的查詢效率更高。如:CouchDB, MongoDb. 國內也有文檔型數據庫SequoiaDB,已經開源。
圖形(Graph)數據庫
圖形結構的數據庫同其他行列以及剛性結構的SQL數據庫不同,它是使用靈活的圖形模型,并且能夠擴展到多個服務器上。NoSQL數據庫沒有標準的查詢語言(SQL),因此進行數據庫查詢需要制定數據模型。許多NoSQL數據庫都有REST式的數據接口或者查詢API。[2] 如:Neo4J, InfoGrid, Infinite Graph.
因此,我們總結NoSQL數據庫在以下的這幾種情況下比較適用:
1、數據模型比較簡單;
2、需要靈活性更強的IT系統;
3、對數據庫性能要求較高;
4、不需要高度的數據一致性;
5、對于給定key,比較容易映射復雜值的環境。
Redis 與其他 key - value 緩存產品有以下三個特點:
? Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。
? Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
? Redis支持數據的備份,集群等高可用功能。
1.4. 特點:
? 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
? 豐富的數據類型 – Redis支持的類型 String, List, Hash, Set 及 Ordered Set 數據類型操作。
? 原子 – Redis的所有操作都是原子性的,意思就是要么成功執行要么失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。
? 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。
Redis是一個簡單的,高效的,分布式的,基于內存的緩存工具。
架設好服務器后,通過網絡連接(類似數據庫),提供Key-Value式緩存服務。
簡單,是Redis突出的特色。
簡單可以保證核心功能的穩定和優異。
1.5. Redis總結
redis單個key 存入512M大小
redis支持多種類型的數據結構(string,list,hash.set.zset)
redis 是單線程 原子性
redis可以持久化 因為使用了 RDB和AOF機制
redis支持集群 而且redis 支持庫(0-15) 16個庫
redis 還可以做消息隊列 比如聊天室 IM
企業級開發中:可以用作數據庫、緩存(熱點數據(經常會被查詢,但是不經常被修改或者刪除的數據)和消息中間件等大部分功能。
優點:
豐富的數據結構
2.高速讀寫,redis使用自己實現的分離器,代碼量很短,沒有使用lock(MySQL),因此效率非常高。
缺點:
持久化。Redis直接將數據存儲到內存中,要將數據保存到磁盤上,Redis可以使用兩種方式實現持久化過程。定時快照(snapshot):每隔一段時間將整個數據庫寫到磁盤上,每次均是寫全部數據,代價非常高。第二種方式基于語句追加(aof):只追蹤變化的數據,但是追加的log可能過大,同時所有的操作均重新執行一遍,回復速度慢。
耗內存,占用內存過高。
Redis
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。