質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Q&A

解決済

1回答

3752閲覧

Redisのkey, valueのvalueのデータの大きさのバランスについて

YosukeNakayama

総合スコア80

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

0グッド

2クリップ

投稿2015/11/09 08:44

###前提・実現したいこと
キャッシュ目的でRedisを使用しておりますが、
Redisの扱いに戸惑っています。

key に対するvalue を設定していくのがredisなのですが、

categoryA の商品が複数ある状態で、
redisを categoryA→["商品Aの情報の配列", "商品Bの情報の配列",,,,,,,,,,, ]
との様に valueの値を大きくしすぎてしまいました。

本来ならば、商品A → 商品Aの情報の配列 というようなセットを考えるべきでしょうか?

あまり商品点数が現在多くないのですが、
keyのvalueを取得する際に失敗すれば、また一からやり直すことをやっているので、
設計ミスかなと感じていますが、

keyが多くなってしまうのも、遅くなってしまうのかなと余計な心配をしてしまっております。

どのような使い方が理想でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「キャッシュ目的」というのが具体的にどんな使い方を指しているのか不明なので具体的な回答は困難ですが・・・

rediskey-valueストア なので、本当に redis を生かしたいならば「key-valueが1対1」になるように設計すべきだと思います。

keyが多くなってしまうのも、遅くなってしまうのかなと余計な心配をしてしまっております。

これは視点がずれている様に思います。
key-valueストアは、元々大量のkey-valueのセットを高速に検索出来るようにする目的で設計されているので、keyの増加による処理速度の低下を気にするのは方向性が違っていますよね?

key-valueストアを使う意義は、リレーショナルデータベースのように高度なデータ一貫性を求めない代わりに、複雑なデータ構造を大量の「key-valueの組」というシンプルなデータ形式に分解する事でスケーラビリティを持たせ処理を高速化するというものです。

redisに保持した情報をどのように使われるのか知りませんが、もしkeyの総数を減らして検索速度を速めても、取り出したデータを利用するに際して加工する必要があるなら本末転倒です。(下記ページをご参照ください)

[なぜ「キー・バリュー型データストア」が注目されるのか](http://itpro.nikkeibp.co.jp/article/COLUMN/20120306/384806/?s2p&rt=nocnt)

ですので、場合によっては数種類の「key-valueの組」を用意し、何段階かの検索を経て目的のリストを取得できる様に設計すべきではないかと思います。

高速に検索する事が目的なのですから、場合によっては、最終的に必要とするデータ自体を必ずしもredisに格納しておく必要は無く、リレーショナルデータベースのテーブル名やレコード番号を高速に特定するためにredisを使用するというやり方だってありです。

投稿2015/11/09 10:05

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YosukeNakayama

2015/11/09 13:21

key-valueストアは、元々大量のkey-valueのセットを高速に検索出来るようにする目的で設計されている・・ そうだったんですか。。。 ちなみに、redisを利用している理由は、amazon product advertising apiの規約上、 apiから引っ張ってきたデータを保存してはいけないというルールがあり、そのためにキャッシュすることで規約を回避するように設計していました。 ありがとうございます! キーバシューとセットで、キーの増加を心配することなくデータをセットしていこうとおもいます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問