Redis基礎(一)——簡介 | 8月更文挑戰

一、Redis簡介

Redis( Remote Dictionary Server ) 是徹底開源免費的,遵照BSD協議,是一個高性能(NOSQL)的 key-value 數據庫;Redis 是一個開源的使用 ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌類型、Key-Value數據庫web

NoSQL介紹

​ NoSQL,泛指非關係型的數據庫。隨着互聯網web2.0網站的興起,傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了不少難以克服的問題,而非關係型的數據庫則因爲其自己的特色獲得了很是迅速的發展。NoSQL數據庫的產生就是爲了解決大規模數據集合多重數據種類帶來的挑戰,尤爲是大數據應用難題。redis

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數據庫在如下的這幾種狀況下比較適用:數據庫

一、數據模型比較簡單;服務器

二、須要靈活性更強的IT系統;markdown

三、對數據庫性能要求較高;網絡

四、不須要高度的數據一致性;數據結構

五、對於給定key,比較容易映射覆雜值的環境。多線程

Redis的特色

  • 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  • 豐富的數據類型 – Redis支持的類型 String(字符串), List(列表), Hash(哈希), Set(集合) 及 Ordered Set(zset,有序集合)數據類型操做。
  • 原子 – Redis的全部操做都是原子性的,意思就是要麼成功執行要麼失敗徹底不執行。單個操做是原子性的。多個操做也支持事務,即原子性,經過MULTI和EXEC指令包起來。
  • 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過時等等特性。

優勢:

  1. 豐富的數據結構
  2. 高速讀寫, redis 使用本身實現的分離器, 代碼量很短, 沒有使用 lock(MySQL),所以效率很是高。

缺點:

  1. 持久化。Redis直接將數據存儲到內存中,要將數據保存到磁盤上,Redis可使用兩種方式實現持久化過程。第一種方式:定時快照(snapshot):每隔一段時間將整個數據庫寫到磁盤上,每次均是寫所有數據,代價很是高。併發

    第二種方式:基於語句追加(aof):只追蹤變化的數據,可是追加的log可能過大,同時全部的操做均從新執行一遍,回覆速度慢。分佈式

  2. 耗內存,佔用內存太高。

應用場景:

一、發佈訂閱系統;

二、地圖信息系統;

三、計時器、計數器;(瀏覽量、點擊率)

Redis 是單線程的!(6.0版本後支持多線程)

Redis是基於內存操做,CPU不是Redis性能瓶頸,Redis的瓶頸是根據機器的內存和網絡帶寬。

相關文章
相關標籤/搜索