1. 程式人生 > 實用技巧 >Redis-03-入門

Redis-03-入門

1、Redis是什麼

  • Redis(Remote Dictionary Server ),遠端字典服務

  • 一個開源的使用C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫

  • 提供多種語言的API

2、Redis能做什麼

  • 資料庫

  • 快取

  • 訊息中介軟體

3、Redis基本知識

  • 資料庫

    • Redis預設有16個數據庫,預設是0號資料庫

    • 切換資料庫命令

      select index
    • 檢視資料庫大小

      dbsize
    • 清空資料庫

      flushall #清空所有資料庫
      flushdb #清空當前資料庫
    • 檢視資料庫的所有key

      keys *
  • Redis為什麼使用單執行緒

    • 官方解釋

      • Redis基於記憶體操作資料,效能限制最可能為機器的記憶體和網路頻寬,單執行緒容易實現

      • 多執行緒在單個CPU中會存在上下文切換的耗時操作,所以基於記憶體操縱的Redis使用單執行緒反而有更高的效能

    • 效能指標

      • Redis是C語言編寫的,官方提供的資料為10萬+的QPS(每秒請求數),所以速度很塊

    • 詳細原因

      • 1、不需要各種鎖的效能消耗

        • Redis的資料結構複雜,有可能會進行很細粒度的操作,比如在很長的列表後面新增一個元素,在hash中新增或者刪除一個物件。這些操作可能就需要加非常多的鎖,導致的結果是同步開銷大大增加。在單執行緒的情況下,就不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗

      • 2、單執行緒多程序叢集方案

      • 3、CPU消耗

  • Redis為什麼讀寫速度這麼快

    • Redis是基於記憶體的,記憶體的讀寫速度快

    • Redis是單執行緒的,省去了很多上下文切換執行緒的時間消耗

    • Redis使用多路複用技術,可以處理併發的連線

      非阻塞IO內部採用了epoll + 自己實現的簡單事件框架,epoll中的讀、寫、關閉、連線都轉換為了事件,利用epoll的多路複用技術,不在IO上浪費時間