Help us understand the problem. What is going on with this article?

Redis Clusterメモ

More than 3 years have passed since last update.

はじめに

Redis cluster tutorialを読んだときのメモ。

雑多なメモ

  • Redisのクラスタは、以下の機能を提供する。
    • 複数のノード間でデータセットを自動的に分割する。
    • ノードが障害に直面したり残りのクラスタと通信できなくなったときに、操作を継続する。
  • ただし、マスターノードの大部分がダウンしているような状況では、Clusterは停止する。
  • 二つのTCPポートを使用する。一つは、クライアントとの対話のための通常のポート、もう一つはノード間のクラスタバス通信で使用する。
    • クラスタバス通信は、誤り検出や、設定更新などの目的で行う。
    • クライアントとの対話のためのポート番号が6379の場合、クラスタバスのポートは16379となる。
    • オフセットは10000固定である。
  • Redisクラスタは、一貫性のあるハッシュは使わないが、ハッシュスロットと呼ばれるシャーディング形式を使う。
  • ハッシュスロットは、16384個ある。
  • ノードは、簡単に追加や削除が可能である。
  • ノードを削除する場合は、削除するノードのハッシュスロットを他のノードに割り当てることにより、削除することが出来る。
  • ダウンタイム無しに、ノードの操作することができる。
  • ハッシュタグと呼ばれる概念を使うことにより、複数キーを強制的に同じスロットに割り当てることが出来る。
    • ハッシュタグとは、{}で囲まれた部分文字列である。
    • 例えば、this{foo}keyanother{foo}keyは、同じハッシュスロットに割り当てられることが保証される。
  • マスターノードの一部が落ちたり、大部分のノードと通信できなくなったとき、継続して利用できるように、Redisクラスタは、マスタースレーブモデルを利用する。全てのハッシュスロットは、1(マスターノード)からN(スレーブノード)のレプリカを持つ。
    • 例えば、マスターBのスレーブをB1とすると、Bが落ちた場合、B1がマスターに昇格する。
    • ただし、BB1が同時に落ちた場合は、処理を継続することはできない。
  • Redisクラスタは、強い一貫性を担保することは出来ない。つまり、特定の条件において、Redisクラスタは書き込みに失敗する。それは、非同期レプリケーションを利用するためである。
    • 例えば、あるデータのスレーブへの書き込みが失敗し、その後、そのスレーブがマスターに昇格した場合は、そのデータは永遠に失われる。
    • 速度と一貫性のトレードオフである。どうしても同期書き込みを使いたい場合は、WAITコマンドを使う。
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away