Redis入門:簡介

Redis入門:簡介

1、介紹

nginx+tomcat集羣可以實現10萬-百萬的併發訪問量;目前的架構不能承受如此海量的訪問,瓶頸還是在數據庫,尤其是查詢。要想突破數據庫的瓶頸,就需要使用緩存技術。

Redis是分佈式的、nosql、key-value、可持久化、內存緩存數據庫。

2、特點

2.1 分佈式

海量數據分片存儲。如下圖:

redis-1

2.2 nosql

not only Structured query language.

不僅僅支持關係型數據——結構化數據(json);支持非關係型數據——非結構化。

Nosql有許多種,redis是其中的一個,它們分爲:

  • 列存儲:Hbase、Cassandra
  • 文檔存儲:MongoDB
  • Key-value存儲:Berkeley DB、MemcacheDB、redis。其中redis最強。
  • 圖存儲:Neo4j、Versant。這塊基本不用。
  • Xml存儲:Berkeley DB xml、XBASE。Oracle很早已經支持這種存儲方式了。

結構化數據

mysql數據庫中的每個表格的每條數據記錄都是關係型、結構化數據。

例如:學生表格

no name age gender
1 張三 35

非結構化數據

數據長度類型不固定。

例如:

《葵花寶典》: 欲練此功,必先自宮,若不自宮,也可成功,若已自宮,未必成功。

2.3 key-value

結構的特點:key自定義的值,value是原數據的切分片段。

key=”《葵花寶典》”;
value=” 欲練此功,必先自宮,若不自宮,也可成功,若已自宮,未必成功。”;

2.4 可持久化

針對內存存儲的重要特點;數據的恢復機制。

2.5 緩存數據庫

緩存數據庫可以添加的位置,可以在項目中的很多位置。

2.5.1 數據庫緩存

數據庫查詢執行的過程包括sql語句執行,組織查詢結構resultSet。

數據庫緩存根據sql可以創建緩存的key,緩存已經擁有了查詢過的resultSet,節省了前面的調度組織時間。

2.5.2 持久層緩存

減少從數據庫獲取結果和創建連接的資源消耗時間,節省了轉化成對象的過程。

2.5.3 業務層和控制層

減少調用的層次。

2.5.4 缺點

如果過多的使用redis或者其他緩存的技術,容易產生數據的冗餘導致內存或者磁盤存儲空間過大佔用。

3 緩存的作用

  • 1.減少數據庫的訪問壓力。
  • 2.減少網絡傳輸。
  • 3.減少數據傳遞層次數。

redis的引入可以適當的添加在控制層和業務層。

4 主流的緩存架構技術

4.1 Ecache

很多數據庫的底層緩存都是使用ecache,併發量差。

4.2 memoryCache

曾經memoryCache市場佔有率90%以上長達10年,直到redis出現,這個局面被打破。

  • 優點:速度,效率和redis不相上下。
  • 缺點:不落地、沒有持久化過程,一旦緩存集羣出現數據丟失的過程(宕機、災難重啓),會出現雪崩/緩存擊穿(面試題)。

4.3 Redis

性能高,併發高,單實例,單線程,持久化可恢復數據能力強。

5 雪崩/緩存擊穿

當海量的數據訪問,請求併發,湧入集羣。需要高性能的處理過程,緩存的存在對於高併發的意義非常大。如果緩存失效,海量請求訪問數據庫,造成數據庫宕機,如果緩存數據沒有恢復的情況下,重啓數據庫後,高併發的請求訪問會導致數據庫再次宕機。這種緩存失效導致的數據庫重複宕機,重啓,叫做緩存擊穿/雪崩

解決緩存擊穿/雪崩的方法:

  • 1.緩存集羣永不宕機。集羣中的一部分服務器一直提供訪問數據的需求。
  • 2.緩存技術添加持久化的功能。Redis可以做到。

6 REDIS基礎應用場景

  • 1、Web間Session共享。多個war工程共享一個Session。
  • 2、分佈式緩存

因爲redis爲鍵值對,而且它提供了豐富的adapter可以支持到C、.net、java客戶端,因此對於異質平臺間進行數據交換起到了作用,它可以用作大型系統的分佈式緩存,並且其setnx的鎖常被用於秒殺、搶紅包這種電商活動場景中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章