1. 程式人生 > 資料庫 >是否使用過 Redis 叢集,叢集的原理是什麼?

是否使用過 Redis 叢集,叢集的原理是什麼?

no-enviction( 驅逐) :禁止驅逐資料
  注意這裡的 6 種機制,volatile 和 allkeys 規定了是對已設定過期時間的資料集淘汰資料還是從全部資料集淘汰資料, 後面的 lru、ttl 以及 random 是三種不同的淘汰策略, 再加上一種 no-enviction 永不回收的策略。
  使用策略規則:
  1、如果資料呈現冪律分佈,也就是一部分資料訪問頻率高,一部分資料訪問頻率 低, 則使用 allkeys-lru
  2、如果資料呈現平等分佈, 也就是所有的資料訪問頻率都相同, 則使用allkeys-random
  12、為什麼 edis 需要把所有資料放到記憶體中?

  答:Redis 為了達到最快的讀寫速度將資料都讀到記憶體中,並通過非同步的方式將資料寫入磁碟。所以 redis 具有快速和資料持久化的特徵。如果不將資料放在記憶體中, 磁碟 I/O 速度為嚴重影響 redis 的效能。在記憶體越來越便宜的今天, redis 將會越來越受歡迎。如果設定了最大使用的記憶體, 則資料已有記錄數達到記憶體限值後不能繼續插入新值。
  13、Redis 的同步機制瞭解麼?
  答:Redis 可以使用主從同步,從從同步。第一次同步時,主節點做一次 bgsave, 並同時將後續修改操作記錄到記憶體 buffer, 待完成後將 rdb 檔案全量同步到複製節點, 複製節點接受完成後將 rdb 映象載入到記憶體。載入完成後, 再通知主節點將期間修改的操作記錄同步到複製節點進行重放就完成了同步過程。
  14、Pipeline 有什麼好處,為什麼要用pipeline?
  答:可以將多次 IO 往返的時間縮減為一次,前提是 pipeline 執行的指令之間沒有因果相關性。使用 redis-benchmark 進行壓測的時候可以發現影響 redis 的 QPS 峰值的一個重要因素是 pipeline 批次指令的數目。
  15、是否使用過 Redis 叢集,叢集的原理是什麼?
  1) 、Redis Sentinal 著眼於高可用, 在 master 宕機時會自動將 slave 提升為master, 繼續提供服務。
  2) 、Redis Cluster 著眼於擴充套件性, 在單個 redis 記憶體不足時, 使用 Cluster 進行分片儲存。
  16、Redis 叢集方案什麼情況下會導致整個叢集不可用?
  答:有 A, B, C 三個節點的叢集,在沒有複製模型的情況下,如果節點 B 失敗了, 那麼整個叢集就會以為缺少 5501-11000 這個範圍的槽而不可用。