redisの原理
事の始まり
以前案件でRedis(ElastiCache)をクラスターモードを有効を用いる時Mgetができない問題に陥った。
その際にそもそもRedisってなんだろ(案件で使う前に考えろって話は置いときましょう。。。)と思い調べることにした。
ハッシュスロット
redisがなんなのかって話は置いておこう。
キーの値をCRC16のチェックサム(データの信頼性を検査するための算出値)に16834の剰余である。
その値がハッシュスロットに入る。(スロットはノード番号と思ってたら良いかと)
ノード
ハッシュスロットに入った値がノードの箇所を示しており、そのノード内からキーを検索する。そしてキーに紐づく値を取得するといった流れになっている。
Mgetできなかった理由
ではなぜMgetできなかったのか。それはこちらのエラーになる。
ERR CROSSSLOT Keys in request don't hash to the same slot
と出てくる。つまりクラスターモードを有効にした場合、ノード間を渡って値を取得してきているがそれができないとのことらしい。
ハッシュタグ
ではどう行なったのかというともう片方に寄せてしまおう作戦である。
ハッシュタグ({ } で囲まれた文字列)を利用することで{ } 内の文字列のみがハッシュスロットの計算に使用される。
そのため、setした値はハッシュタグを用いることで特定のノード内に保管されることになる。
Author And Source
この問題について(redisの原理), 我々は、より多くの情報をここで見つけました https://qiita.com/konia-s/items/9ac6b0f07ad660222ca3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .