1. 程式人生 > >2018/08/14 《Redis 入門指南》 學習筆記(三)

2018/08/14 《Redis 入門指南》 學習筆記(三)

大於 tsa 16px 什麽 get 執行 returns 圖片 font

  第五章《實踐》

  第七章《持久化》

總結

PS:

  在實踐章節涉及到了很多語言 Node/Python等。因為這些語言目前還沒有涉及。所以只挑選有關的 PHP 章節來做講解。

1:PHP 常用的客戶端有哪些?區別是什麽?

  - 常用的 Redis 客戶端,官方推薦有兩種 Redis / Predis 兩種。

  - Predis 是使用 PHP 來實現原生客戶端。不需要安裝擴展,Composer / Git 可以直接拉取使用。

  - Redis 是一個 C 的擴展。

  - 除非執行大量命令,否則兩者差別並不大

2:Redis 管道命令簡單使用

  - 在之前的章節中已經講解管道命令的優點和適用場景,今天著重的來實現看下。

  - 試驗為 Predis 。

  - 官方提供了兩種方式,也很簡單,看一下就明白

  // Executes a pipeline inside the given callable block:
  $responses = $redis->pipeline(function ($pipe) {
      for ($i = 0; $i < 1000; $i++) {
          $pipe->set("key:$i", str_pad($i, 4, 0, 0));
          $pipe->get("key:$i");
      }
  });

  
// Returns a pipeline that can be chained thanks to its fluent interface:   $responses = $redis->pipeline()->set(NAME, bar)->get(NAME)->execute();

3:RDB 的本質是通過什麽方式進行持久化的?

  - 本質是通過 快照 方式來進行持久化。

4:RDB 生成快照的方式有哪些?

  - 配置自動生成快照

    - 技術分享圖片 redis.conf 配置文件

    - 解讀:15分鐘內(900秒)有一個鍵被修改,則生成快照。其余同理

  - 執行 SAVE / BGSAVE 生成快照

    - 在執行 SAVE 時, Redis會同步執行快照,同時堵塞其他客戶端命令,所以要避免在生產環境中直接使用。

    - 手動快照推薦 BGSAVE ,後臺執行,對其他客戶端無影響。

    - 執行 LASTSAVE 可以查看最近一次快照的時間戳。

5:RDB 生成快照的原理是什麽?

  - Redis 在執行快照時使用 fock 函數復制一份當前進程(父進程)的副本(子進程);

  - 父進程繼續接受客戶端請求,子進程寫入。

  - 子進程寫入完成之後,用臨時文件替換舊的 RDB 文件,一次快照完成。

6:RDB 其他

  - 默認的話 RDB 是經過壓縮的,可以 配置 rdbcompression 來關閉壓縮,減少CPU消耗

  - 可以通過 dir 和 rdbfilename 來確定rdb的存儲路徑和名稱

  

4:AOF 是默認開啟的麽?如何開啟?

  - AOF 默認是不開啟持久化的。配置 appendonly 開啟。

5:AOF 隨著時間文件越來越大,是如何處理的?

  - Redis 可以使用 rewrite 重寫日誌

  - auto-aof-rewrite-percentage 100 // 大於上次重寫的百分比

  - auto-aof-rewrite-min-size 64mb // 允許重寫的最小

5:AOF 是當時就寫入磁盤了麽?

  - 沒有,由於操作系統的緩存機制,AOF 進入了系統緩存,會進入 30S 一次的同步操作。

  - 配置 appendfsync

    - always 每次同步,最安全,最慢。

    - everysec 每秒一次,默認

    - no 不同步,使用系統同步,不推薦~

6:當 AOF 和 RDB 同時存在時,優先恢復哪個?

  - AOF

2018/08/14 《Redis 入門指南》 學習筆記(三)