Redis系列-第一篇Redis介紹

1.Redis介紹

1.1什麼Redis

  • Redis是用C語言開發的一個開源的高性能鍵值對(key-value)內存數據庫。算法

  • 它提供五種數據類型來存儲值:字符串類型、散列類型、列表類型、集合類型、有序集合類型數據庫

  • 它是一種NoSQL數據庫。緩存

1.2 什麼是NoSQL

  • NoSQL,即Not-Only SQL(不單單是SQL),泛指非關係型的數據庫。
  • 什麼是關係型數據庫?數據結構是一種有行有列的數據庫
  • NoSQL數據庫是爲了解決高併發、高可用、高可擴展、大數據存儲問題而產生的數據庫解決方案。
  • NoSQL能夠做爲關係型數據庫的良好補充,可是不能替代關係型數據庫。

1.3NoSQL數據庫分類

  • 鍵值(Key-Value)存儲數據庫服務器

    • 相關產品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
    • 典型應用: 內容緩存,主要用於處理大量數據的高訪問負載。
    • 數據模型: 一系列鍵值對
    • 優點: 快速查詢
    • 劣勢: 存儲的數據缺乏結構化
  • 列存儲數據庫微信

    • 相關產品:Cassandra, HBase, Riak
    • 典型應用:分佈式的文件系統
    • 數據模型:以列簇式存儲,將同一列數據存在一塊兒
    • 優點:查找速度快,可擴展性強,更容易進行分佈式擴展
    • 劣勢:功能相對侷限
  • 文檔型數據庫網絡

    • 相關產品:CouchDB、MongoDB
    • 典型應用:Web應用(與Key-Value相似,Value是結構化的)
    • 數據模型: 一系列鍵值對
    • 優點:數據結構要求不嚴格
    • 劣勢:
  • 圖形(Graph)數據庫session

    • 相關數據庫:Neo4J、InfoGrid、Infinite Graph
    • 典型應用:社交網絡
    • 數據模型:圖結構
    • 優點:利用圖結構相關算法。
    • 劣勢:須要對整個圖作計算才能得出結果,不容易作分佈式的集羣方案。

1.4Redis歷史發展

  • 2008年,意大利的一家創業公司Merzia推出了一款基於MySQL的網站實時統計系統LLOOGG,然而沒過多久該公司的創始人 Salvatore Sanfilippo便 對MySQL的性能感到失望,因而他決定親自爲LLOOGG量身定作一個數據庫,並於2009年開發完成,這個數據庫就是Redis。
  • 不過Salvatore Sanfilippo並不知足只將Redis用於LLOOGG這一款產品,而是但願更多的人使用它,因而在同一年Salvatore Sanfilippo將Redis開源發佈
  • 並開始和Redis的另外一名主要的代碼貢獻者Pieter Noordhuis一塊兒繼續着Redis的開發,直到今天。
  • Salvatore Sanfilippo本身也沒有想到,短短的幾年時間,Redis就擁有了龐大的用戶羣體。Hacker News在2012年發佈了一份數據庫的使用狀況調查,結果顯示有近12%的公司在使用Redis。國內如新浪微博、街旁網、知乎網,國外如GitHub、Stack Overflow、Flickr等都是Redis的用戶。
  • VMware公司從2010年開始贊助Redis的開發, Salvatore Sanfilippo和Pieter Noordhuis也分別在3月和5月加入VMware,全職開發Redis。

1.5 Redis的應用場景

  • 內存數據庫(登陸信息、購物車信息、用戶瀏覽記錄等)數據結構

  • 緩存服務器(商品數據、廣告數據等等)。(最多使用)架構

  • 解決分佈式集羣架構中的session分離問題(session共享)。併發

  • 任務隊列。(秒殺、搶購、12306等等)

  • 支持發佈訂閱的消息模式

  • 應用排行榜。

  • 網站訪問統計。

  • 數據過時處理(能夠精確到毫秒)

  • 等等...

1.6 用好Redis的建議

不少開發會認爲用好Redis相應的API就算Redis學好了,這是一個錯誤的想法。若是Redis底層不瞭解,一旦線上出現問題是很難排查的,因此咱們在用好RedisAPI的同時也須要了解Redis的底層細節.有助於幫助咱們開發人員更好的用好Redis.如Redis是單線程的,因此對於線上不少耗時的操做須要禁用防止Redis阻塞。還有Redis是一個內存數據庫,在宕機或掛掉以後重啓會是鍵數據丟失,因此咱們應該瞭解Redis的持久化。

1.7 Redis里程碑版本

Redis借鑑了Linux操做系統對於版本號的命名規則: 版本號第二位若是是奇數, 則爲非穩定版本(例如2.七、 2.九、 3.1) , 若是是偶數, 則爲穩定版本(例如2.六、 2.八、 3.0、 3.2) 。 當前奇數版本就是下一個穩定版本的開發版本, 例如2.9版本是3.0版本的開發版本。 因此咱們在生產環境一般選取偶數版本的Redis, 若是對於某些新的特性想提早了解和使用, 能夠選擇最新的奇數版本。

Redis3.0最大的改動就是添加Redis的分佈式實現Redis Cluster, 填補了Redis官方沒有分佈式實現的空白。

微信公衆號 <div align=center>JAVA程序猿成長之路 JAVA程序猿成長之路 分享資源,記錄程序猿成長點滴。專一於Java,Spring,SpringBoot,SpringCloud,分佈式,微服務。

相關文章
相關標籤/搜索