Redis
文章目錄
1.Redis概念
redis是一款高性能的NoSQL系列的非關係型數據庫
高性能 NoSQL 非關係型數據庫
關係型數據庫:MySQL、Oracle、SQL Server
- 數據之間有關聯關係
- 數據存儲在磁盤的文件上
非關係型數據庫(NoSQL):redis、hbase…
- 數據之間沒有關聯關係
- 數據存儲在內存中
經常查詢一些不太經常發生變化的數據
操作關係型數據庫非常耗時的
緩存思想解決這個問題
-
從緩存中獲取數據
1、有數據直接返回
-
沒有數據:
1、從數據庫查詢
2、將數據放入緩存 緩存 redis做緩存
3、返回數據
1.1.什麼是NOSQL
NoSQL(NoSQL = Not Only SQL),意即“不僅僅是SQL”,是一項全新的數據庫理念,泛指非關係型的數據庫。
隨着互聯網web2.0網站的興起,傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的數據庫則由於其本身的特點得到了非常迅速的發展。NoSQL數據庫的產生就是爲了解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。eg(抖音用戶發佈一些自己的視頻 ,幾億人的視頻時時更新)
NoSQL不僅僅是SQL,非關係型的數據庫
超大規模和高併發的web2.0純動態網站
1.1.1. NOSQL和關係型數據庫比較
優點:
1)成本:nosql數據庫簡單易部署,基本都是開源軟件,不需要像使用oracle那樣花費大量成本購買使用,相比關係型數據庫價格便宜。感覺Oracle非常麻煩的。
2)查詢速度:nosql數據庫將數據存儲於緩存之中,關係型數據庫將數據存儲在硬盤中,自然查詢速度遠不及nosql數據庫。網絡>IO>內存 在內存中查詢速度超級快的
3)存儲數據的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲基礎類型以及對象或者是集合等各種格式,而關係型數據庫則只支持基礎類型。
NoSQL 存儲格式可以是key,value鍵值形式、文檔形式、圖片形式等等
4)擴展性:關係型數據庫有類似join這樣的多表查詢機制的限制導致擴展很艱難。 可擴展
缺點:
1)維護的工具和資料有限,因爲nosql是屬於新的技術,不能和關係型數據庫10幾年的技術同日而語。
標準 學習的成本
2)不提供對sql的支持,如果不支持sql這樣的工業標準,將產生一定用戶的學習和使用成本。
SQL的支持 想學了下關係型數據庫MySQL掌握了SQL,很快能上手Oracle數據庫的。
3)不提供關係型數據庫對事務的處理。 事務的處理
學習的成本
1.1.2. 非關係型數據庫的優勢:
1)性能NOSQL是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過SQL層的解析,所以性能非常高。
少了層 NoSQL是基於鍵值對的 直接鍵 值 獲取
2)可擴展性同樣也是因爲基於鍵值對,數據之間沒有耦合性,所以非常容易水平擴展。
可擴展性 鍵值對 數據之間沒有耦合性 很容易水平擴展的
1.1.3. 關係型數據庫的優勢:
1)複雜查詢可以用SQL語句方便的在一個表以及多個表之間做非常複雜的數據查詢。
複雜查詢 用SQL語句方便在一個表以及多個表之間做非常複雜的數據查詢
用SQL語句可以方便的複雜查詢
2)事務支持使得對於安全性能很高的數據訪問要求得以實現。對於這兩類數據庫,對方的優勢就是自己的弱勢,反之亦然。
事務支持
1.1.4. 總結
關係型數據庫與NoSQL數據庫並非對立而是互補的關係,即通常情況下使用關係型數據庫,在適合使用NoSQL的時候使用NoSQL數據庫,讓NoSQL數據庫對關係型數據庫的不足進行彌補。一般會將數據存儲在關係型數據庫中,在nosql數據庫中備份存儲關係型數據庫的數據
MySQL + Redis + ElasticSearch 使用場景
1.2. 主流的NOSQL產品
- 鍵值(Key-Value)存儲數據庫
相關產品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型應用: 內容緩存,主要用於處理大量數據的高訪問負載。
數據模型: 一系列鍵值對
優勢: 快速查詢
劣勢: 存儲的數據缺少結構化 - 列存儲數據庫
相關產品:Cassandra, HBase, Riak
典型應用:分佈式的文件系統
數據模型:以列簇式存儲,將同一列數據存在一起
優勢:查找速度快,可擴展性強,更容易進行分佈式擴展
劣勢:功能相對侷限 - 文檔型數據庫
相關產品:CouchDB、MongoDB
典型應用:Web應用(與Key-Value類似,Value是結構化的)
數據模型: 一系列鍵值對
優勢:數據結構要求不嚴格
劣勢: 查詢性能不高,而且缺乏統一的查詢語法 - 圖形(Graph)數據庫
相關數據庫:Neo4J、InfoGrid、Infinite Graph
典型應用:社交網絡
數據模型:圖結構
優勢:利用圖結構相關算法。
劣勢:需要對整個圖做計算才能得出結果,不容易做分佈式的集羣方案。
1.3 什麼是Redis
Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫,官方提供測試數據,50個併發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s ,且Redis通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前爲止Redis支持的鍵值數據類型如下:
1) 字符串類型 string
2) 哈希類型 hash
3) 列表類型 list
4) 集合類型 set
5) 有序集合類型 sortedset
高性能 鍵值對 讀寫速度 多種鍵值類型 適應不同場景下的存儲需求
字符串類型 string
哈希類型 hash
列表類型 list
集合類型 set
有序集合類型 sortedset
1.3.1 redis的應用場景
• 緩存(數據查詢、短連接、新聞內容、商品內容等等)
• 聊天室的在線好友列表
• 任務隊列。(秒殺、搶購、12306等等)
• 應用排行榜
• 網站訪問統計
• 數據過期處理(可以精確到毫秒
• 分佈式集羣架構中的session分離
緩存
任務隊列
應用排行榜
網站訪問統計
數據過期處理 key value
分佈式集羣架構中的session分離
NoSQL數據庫 數據存儲在內存中 高性能