redis數據庫學習

0 使用理由

0.1 高性能

  • 純內存操作,比在硬盤操作數據的速度有極大提升

0.2 高併發

  • 承受請求比直接操作數據庫大得多

0.3 單線程

  • 至於redis單線程的原因。有點意思。CPU不是Redis的主要瓶頸,因爲Redis通常是內存或網絡綁定。例如,一般Linux系統上運行的Redis每秒甚至可以提供100萬個請求,因此不會使用太多的CPU。言下之意,就是說redis根本不需要多線程,況且多線程會有上下文切換消耗。當然可以通過啓動多個redis實例,達到利用cpu的目的。

1 緩存使用

1.1 使用場景

  • 讀對於寫,爲了減少數據庫訪問的id操作,可以將數據緩存,提高系統性能

1.2 使用方法

  • 查詢
    1. 查出數據後,利用json將數據轉成String類型,存進reids
  • 更新
    1. 先把數據更新到數據庫
    2. 刪除reids的key

2 緩存雪崩

2.1 what

  • 由於緩存時間相近或者redis宕機導致緩存數據同一時間大面積失效,使得數據庫短時間請求增多,增加數據庫壓力,減低數據庫訪問性能

2.2 how(解決):

  • 事前:
    1. 宕機導致:的保證redis高可用,發現機器宕機,及時補上。選擇合適的內存淘汰策略
    2. 緩存失效時間相同導致的:在設計時間的時候隨機加減幾分鐘
  • 事後:
    1. 宕機導致的: 利用redis持久化機制保存的數據及時恢復緩存

3 緩存穿透

3.1 what(是什麼)

  • 請求緩存中不存在的數據,使得數據庫壓力增大,從而崩掉

3.2 how:(解決)

  • 布隆過濾器
  • 直接緩存他(空的),設計一個較短時間,使其失效

4 Redis數據類型

  • String 字符串
  • Hash哈希 :用戶ID
  • List列表 :粉絲列表
  • Set集合 :共同好友
  • Sorted Set有序集合:排行榜

5 主從複製

5.1 定義/解釋

建立一個與主數據庫一樣的數據庫環境,稱爲從數據庫,主複製庫一般是準實時的業務數據庫。

5.2 作用

  • 作爲備用數據庫,主數據庫發生故障後,切換到從數據庫
  • 架構擴展,業務量增大,io訪問頻繁,做多庫的存儲,提高io性能
  • 實現讀寫分離。

5.3 原理

  • 將主數據庫中的bin-log文件的sql語句複製到從數據庫中的relay-log文件,再次執行。

5.4 Redis哨兵

  • 用途:
    1. 監視主從數據庫運行情況
    2. 主數據庫發生故障後,自動切換到從數據庫

6 卡頓現象

6.1 解決方法:

  • 使用show global status
  • 使用show processlist
  • 使用查詢日誌

7 大數據查詢優化

  • 優化sql語句 索引
  • 使用主從複製,實現讀寫分離
  • 加入緩存 如redis
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章