RDBMSの代替としてredisを使うことになり、DB設計する上で考慮すべき型の概要と利用法をまとめる。
間違いやもっと良い使い方があれば教えてください^^
■String - 文字列型
・概要
1つのkeyに対して1GBまでの文字列を1つ持つことが出来る。基本。・使いどころ
JPEGイメージ、シリアライズされたオブジェクト情報など単体で持つ時。(他の型の基本になってるので、これ単体で使うと言うより応用する感じ?単体で十分なとき等で使う?)
■List - リスト型
・概要
文字列型のリスト。値を追加した順序が保持される。値は重複OK!リスト前後からの出し入れ、リストの範囲指定での取り出し等の操作ができる。
・使いどころ
時刻または日付を保持するような情報。TwitterのTLの様な追加順に並ぶ一連のデータ。要素の追加削除がリストの先頭や末尾(そうでない場合は適さない)に高頻度に発生する情報。追加順・時系列順のデータはリスト型に適している。
■Set - セット型
・概要
文字列型のセット。順番を持たないデータの集合。重複の無い値、または重複をチェックする必要の無い値を格納するのに適している。
セットの検索、セット同士の比較、結合が出来る。
・使いどころ
集合計算を行うような集合した情報。タグ検索が有名。カテゴリに対するユーザーの属性集計などにも使える。■Sorted set - ソート済みセット型
・概要
setの各要素にソート用の値(Score)を付けたセット。Scoreで自動的にソート。Scoreは重複可能だが、setの各要素はセット型と同じく重複出来ない。
Scoreを評価して値を取り出す事ができる。Scoreのランキングも取得可能。
・使いどころ
ランキングのような機能を作るために生まれてきたんじゃないかくらい、ランキング作りやすい。アクセスカウンタ、最新更新順表示など、特定の順序で参照される様なデータ。
※リスト型との使い分けとして、リスト型に対するSORTコマンドを高い頻度で使わなければならない場合は負荷が高くなるのでSorted setを使う。時系列ソートでなければこっち。
■Hash - ハッシュ型
・概要
1つのkeyに対して、field-value型のMapを格納する。key名はもちろん、key内でのfield名も重複付加。key名が違う場合はfield重複出来る。
・使いどころ
会員情報など、ユーザー名・パスワード・最終ログイン時刻などの構造化されたフィールドを保持させたりできる。それぞれにクセがあるのでMySQL脳から頭切り替えないとアカン。
※参考
公式日本語リファレンス - データ型
http://redis.shibu.jp/datatypes.html
ニコニコ生放送に見るRedis活用ノウハウ
http://gihyo.jp/dev/feature/01/redis
0 件のコメント:
コメントを投稿