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 使用方法

  • 查詢redis

    1. 查出數據後,利用json將數據轉成String類型,存進reids
  • 更新sql

    1. 先把數據更新到數據庫
    2. 刪除reids的key

2 緩存雪崩

2.1 what

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

2.2 how(解決):

  • 事前:數據庫

    1. 宕機致使:的保證redis高可用,發現機器宕機,及時補上。選擇合適的內存淘汰策略
    2. 緩存失效時間相同致使的:在設計時間的時候隨機加減幾分鐘
  • 過後:json

    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
相關文章
相關標籤/搜索