redis→分散式快取

super_lixiang發表於2018-09-14

簡介 

1. redis 是什麼? 

  • REmote DIctionary Server(遠端字典伺服器) 
  • 是完全開源免費的,用 C 語言編寫的,遵守 BSD 協議,是一個高效能的 (key/value)分散式記憶體資料庫,基於記憶體執行並支援持久化的 NoSQL 資料庫, 是當前最熱門的 NoSql 資料庫之一,也被人們稱為資料結構伺服器。
  • 能滿足對海量資料的讀寫
  • redis 的鍵只能是字串
  • redis 的值支援多種資料型別:
  1. 字串:string
  2.  雜湊:hash
  3. 字串列表:list
  4. 字串集合:set
  5. 有序集合:zset(sorted set)  HyperLogLog 結構:redis2.8.9 版本之後才有,用來做統計的演算法
  6. GEO 結構:redis3.2 版本之後才有,是地理位置相關的資料型別 

2. redis 的優點? 

  • 高效能(Redis 讀的速度是 11W 次/s,寫的速度是 8.1W 次/s)
  • 原子性(保證資料的準確性)
  • 持久儲存(兩種方式 RDB/快照,AOF/日誌)
  • 主從結構,主機會自動將資料同步到從機,可以進行讀寫分離
  • 從 3.0 版本開始,支援叢集 

3. redis 的缺點? 

  • 由於是記憶體資料庫,所以,單臺機器儲存的資料量,跟機器本身的記憶體 大小有關。雖然 redis 本身有 key 過期策略,但是還是需要提前預估和 節約記憶體。如果記憶體增長過快,需要定期刪除資料。
  • 修改配置檔案,進行重啟,將硬碟中的資料載入進記憶體,時間比較久。 在這個過程中,redis 不能提供服務。 

4. redis 的主要功能? 

  • KV
  • Cache
  • Persistence 

5. redis 與其他 key-value 快取產品的區別 

  • redis 支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的 時候可以再次載入進行使用。
  • redis 不僅僅支援簡單的 key-value 型別的資料,同時還提供 list,set, zset,hash 等資料結構的儲存。 
  • redis 支援資料的備份,即 master-slave 模式的資料備份。 

6. redis 的主要功能 

  • 記憶體儲存和持久化:redis 支援非同步將記憶體中的資料寫到硬碟上,同時 不影響繼續服務。
  • 分散式快取
  • 取最新 N 個資料的操作,如:可以將最新的 10 條評論的 ID 放在 List 集合。
  • 模擬類似於 HttpSession 這種需要設定過期時間的功能。
  • 釋出、訂閱訊息系統。
  • 定時器、計數器。 

7. redis 的應用場景? 

  • 主要應用在高併發和實時請求的場景
  • 關注列表,粉絲列表
  • 微博數,粉絲數
  • 熱門微博 

8. redis 版本下載

  • https://redis.io/
  • http://www.redis.cn/
  • 下載最新穩定版,如下圖所示。 

9.阿里商品資訊如何存放?

(1)商品的基本資訊

RDBMS中,mysql(內部工程師自己根據業務改造)

(2)商品描述、詳情、評論(多文字類的):MongDB中

(3)商品圖片

  • 淘寶自己的TFS
  • Google的GFS
  • Hadoop HDFS

(4)商品關鍵字:淘寶Isearch搜尋引擎(多隆,蔡景現)

(5)商品的波段性熱點高頻資訊:Redis,Tair

(6)商品交易、價格計算、支付系統

         外部系統,第三方提供支付介面

         支付寶,由苗人鳳負責


Redis安裝

(1)將tar包上傳 /usr/local並解壓

(2)安裝一些可能用到的東西

(3)在redis解壓路徑,進行編譯

(4)進行安裝

(5)安裝好的可執行檔案在以下目錄


Redis啟動和停止

(1)啟動redis

(2)停止 ctrl + C

(3)修改配置檔案

(4)修改為yes,表示走守護程式

(5)使用剛修改的配置,不佔用當前視窗

(6)檢視啟動後的程式

(7)關閉服務端


Redis客戶端

(1)進入客戶端


Redis雜項知識

(1)redis-benchmark可用於效能測試

必須redis-server啟動後,再執行

(2)redis預設埠6379

6379對應著號碼MERZ

(3)redis所有的索引都是從零開始

(4)redis的預設庫有16個(索引0~15)

(5)檢視多少個鍵

(6)前一個清當前庫,後一個清所有庫


Redis配置檔案詳解

(1)對大小寫不敏感,只支援bytes型別

(2)redis.conf作為一個總的檔案,可以包含其他檔案

(3)設定後臺程式,埠號,日誌級別,庫的數量

(4)快照的配置,用於配置RDB策略,配置dump檔案相關資訊

(5)主從複製的配置

(6)可以配置密碼,預設無密碼,配置密碼,16個庫是用同一個密碼

(7)最大連線,最大記憶體的一些設定

(8)這裡可以配置AOF的持久化策略


Redis的RDB策略

 RDB 是什麼 

  • Redis DataBase,在指定的時間間隔內將記憶體中的資料集快照寫入磁碟,也就是 Snapshot 快照,它恢復時是將快照檔案直接讀到記憶體裡
  • Redis 會單獨建立(fork,可以理解為拷貝)一個子程式來進行持久化,會先將數 據寫入到一個臨時檔案中,待持久化過程都結束了,再用這個臨時檔案替換上次持 久化好的檔案
  • 整個過程中,主程式是不進行任何 IO 操作的,這就確保了極高的效能如果需要進 行大規模資料的恢復,且對於資料恢復的完整性不是非常敏感,那 RDB 方式要比 AOF 方式更加的高效。
  • RDB 的缺點是最後一次持久化後的資料可能丟失。 

Fork 

  • Fork 的作用是複製一個與當前程式一樣的程式。
  • 新程式的所有資料(變數、環境變數、程式計數器等)數值都和原程式一致,但是 是一個全新的程式,並作為原程式的子程式

RDB 的優點 

  • 適合大規模的資料恢復 
  • 對資料完整性和一致性要求不高 

RDB 的缺點 

  • 在一定間隔時間做一次備份,所以如果 redis 意外 down 掉的話,就會丟失最後一 次快照後的所有修改
  • Fork 的時候,記憶體中的資料被克隆了一份,大致 2 倍的膨脹性需要考慮 

(1)如何配置RDB

(2)效能配置:持久化的RDB檔案會進行壓縮,改為NO就不壓縮

(3)redis會對持久化的資料進行校驗,增加10%的效能消耗


RedisAOF策略

 AOF 是什麼 

  • 以日誌的形式來記錄每個寫操作,將 Redis 執行過的所有寫指令記錄下來(讀操作 不記錄),只許追加檔案但不可以改寫檔案
  • redis 啟動之初會讀取該檔案重新構建資料,換言之,redis 重啟的話就根據日誌文 件的內容將寫指令從前到後執行一次以完成資料的恢復工作 

(1)以日誌的形式持久化操作(只讀寫的日誌)

(2)配置AOF策略,改yes,開啟AOF

  (3)AOF資料修復

(4)dump和AOF同時存在,是AOF生效


Redis的事務

 redis 的事務是什麼? 

  • 可以一次執行多個命令,批處理,本質是一組命令的集合。一個事務中的所有命令 都會序列化,按順序地序列化執行而不會被其它命令插入,不許加塞 

redis 的事務能做什麼? 

  • 一個佇列中,一次性、順序性、排他性的執行一系列命令 

(1)正常執行

(2)取消事務

(3)全體連坐

(4)redis支援部分事務(要求語法正確)

(5)watch監控

樂觀鎖和悲觀鎖

悲觀鎖:生產環境下用的不多

樂觀鎖:加個行鎖

相關文章