redisのkeyについて調べてみた
June 28, 2016
redis
NoSQL
kvs
特徴
- バイナリセーフ
- 文字列からjpegファイルまでキーとして扱える
- 空文字もOK
- 短いほうがメモリ効率がいい。
- キーの最大長は512MB
- ある要素を追加するとき、対象のキーが存在しない場合は、要素の追加前に
データタイプの空集合(型が決まっていないもの)が作成される データタイプの空集合(型が決まっていないもの)から全ての要素が削除されたとき、キーは自動的に削除される- 空のキーに対してread-onlyのコマンドや削除するコマンドを実行すると、空集合に対しての結果が返ってくる
- すでにキーが存在する場合、別のデータタイプ(型)のコマンドは実行エラーになる
注意点
- 長すぎるキーはだめ。メモリ効率が悪く、データから検索時にキーの比較に処理が重くなる
- キーをhash化すると(e.g. sha1)、メモリ使用効率とネットワーク帯域が良くなる
- 短すぎるキーはだめ(e.g.
user:10:followingをu:10:fなどにする)。可読性が悪く、メモリ効率では誤差。 - スキーマにこだわるべき。
object-type:idみたいな形が有効。- e.g.
user:1000comment:1234:reply.tocomment:1000:reply-to
- e.g.
コマンド
型を取得
返り値は string 、list、set、zset、hash、none など
> type "キー"
削除
削除されると 1、 削除されない、もしくはキーが存在しない場合は 0を返す
> del "キー"
存在判定
DBに存在すれば 1、存在しない場合 0 を返す
> exists "キー"