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:1000
comment:1234:reply.to
comment:1000:reply-to
- e.g.
コマンド
型を取得
返り値は string
、list
、set
、zset
、hash
、none
など
> type "キー"
削除
削除されると 1
、 削除されない、もしくはキーが存在しない場合は 0
を返す
> del "キー"
存在判定
DBに存在すれば 1
、存在しない場合 0
を返す
> exists "キー"