0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

redisの原理

Posted at

事の始まり

以前案件でRedis(ElastiCache)をクラスターモードを有効を用いる時Mgetができない問題に陥った。
その際にそもそもRedisってなんだろ(案件で使う前に考えろって話は置いときましょう。。。)と思い調べることにした。

ハッシュスロット

redisがなんなのかって話は置いておこう。
キーの値をCRC16のチェックサム(データの信頼性を検査するための算出値)に16834の剰余である。
その値がハッシュスロットに入る。(スロットはノード番号と思ってたら良いかと)

ノード

ハッシュスロットに入った値がノードの箇所を示しており、そのノード内からキーを検索する。そしてキーに紐づく値を取得するといった流れになっている。

Mgetできなかった理由

ではなぜMgetできなかったのか。それはこちらのエラーになる。

ERR CROSSSLOT Keys in request don't hash to the same slot

と出てくる。つまりクラスターモードを有効にした場合、ノード間を渡って値を取得してきているがそれができないとのことらしい。

ハッシュタグ

ではどう行なったのかというともう片方に寄せてしまおう作戦である。
ハッシュタグ({ } で囲まれた文字列)を利用することで{ } 内の文字列のみがハッシュスロットの計算に使用される。
そのため、setした値はハッシュタグを用いることで特定のノード内に保管されることになる。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?