1. 程式人生 > 其它 >Redis入門指南 閱讀筆記 (簡單整理)

Redis入門指南 閱讀筆記 (簡單整理)

原書: 李子驊. Redis入門指南(第2版)(非同步圖書)人民郵電出版社. Kindle 版本.

  1. Redis核心資料結構:

    1. String (字串/二進位制串)

      1. 最基本的資料型別

      2. 最大大小為512MB

      3. 所有的資料型別的基礎都是二進位制串

    2. HashTable (散列表)

      1. 欄位到二進位制串的對映, 其中二進位制串不可巢狀其他型別

      2. 散列表的最大大小為2^32-1個元素

      3. 一般用於存放程式碼中的結構體物件, 可以保證對每個成員的原子操作

    3. List (列表)

      1. 內部結構為雙向連結串列, 頭尾操作效率高, 隨機訪問效率低

      2. 最長上限也是2^32-1 (4,294,967,295)

      3. 用於實現佇列或者棧

    4. Set (集合/無序集合)

      1. 是鍵值對中值為空的散列表

      2. 上限2^32-1

      3. 用於進行集合操作, 以及判斷元素是否存在

    5. SortedSet (有序集合)

      1. 由跳躍表, 散列表結合儲存的資料模式. 其基於每個物件的score進行排序, 支援score重複

      2. 對於有序集合的隨機訪問效率較列表更高, 可以通過調整元素score大小控制元素位置

  2. Redis執行緒模型: 單執行緒模型

  3. Redis鍵值的一般命名格式: <物件型別>:<物件id>:<物件屬性>

  4. Redis的一般功能:

    1. 資料庫

    2. 快取

    3. 訊息佇列

  5. Redis的進階功能:

    1. 事務: MULTI, EXEC, WATCH三個命令

    2. 過期時間: EXPIRE, TTL, PERSIST

    3. 排序: 使用有序集合, SORT, BY, GET, STORE

    4. 訊息通知: SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE

    5. 對於記憶體消耗的優化: 使用較短的鍵值, 進行Redis內部編碼的設定

    6. Redis指令碼: Lua指令碼, 通過綜合基本命令形成自定義的命令, 其執行是原子性的

    7. 記憶體資料持久化: RDB備份資料本身; AOF備份命令操作

  6. Redis叢集:

    1. 簡單叢集: 只是簡單的讀寫分離, 通過RDB進行復制初始化, 通過AOF進行請求的非同步同步. 出現宕機需要手動處理

    2. 哨兵叢集: 將簡單叢集中的宕機的手動處理通過哨兵完成, 進行自動的節點角色轉換, 以及資料的同步

    3. Redis-cluster叢集: 解決主從複製的橫向拓展問題. 使用雜湊槽進行資料的分配, 以和單體相近的效能適應大資料量環境

  7. Redis安全:

    1. Redis需要部署在可信環境, 不能直接從外網訪問, 需通過軟體進行隔離

    2. 對Redis設定密碼進行授權訪問

    3. 對於Redis的命令進行重新命名以及禁用, 限制訪問來源以及訪問許可權

  8. Redis伺服器與客戶端的交流協議:

    1. 簡單協議: 直接是命令列的輸入進行通訊

    2. unified request protocol: 以與AOF相同的格式進行通訊, 是進行主從複製以及進行程式碼庫通訊的主要方法