redisのkeyについて調べてみた

June 28, 2016
redis NoSQL kvs

特徴

  • バイナリセーフ
  • 文字列からjpegファイルまでキーとして扱える
  • 空文字もOK
  • 短いほうがメモリ効率がいい。
  • キーの最大長は512MB
  • ある要素を追加するとき、対象のキーが存在しない場合は、要素の追加前に データタイプの空集合(型が決まっていないもの) が作成される
  • データタイプの空集合(型が決まっていないもの) から全ての要素が削除されたとき、キーは自動的に削除される
  • 空のキーに対してread-onlyのコマンドや削除するコマンドを実行すると、空集合に対しての結果が返ってくる
  • すでにキーが存在する場合、別のデータタイプ(型)のコマンドは実行エラーになる

注意点

  • 長すぎるキーはだめ。メモリ効率が悪く、データから検索時にキーの比較に処理が重くなる
  • キーをhash化すると(e.g. sha1)、メモリ使用効率とネットワーク帯域が良くなる
  • 短すぎるキーはだめ(e.g. user:10:followingu:10:f などにする)。可読性が悪く、メモリ効率では誤差。
  • スキーマにこだわるべき。object-type:id みたいな形が有効。
    • e.g.
      • user:1000
      • comment:1234:reply.to
      • comment:1000:reply-to

コマンド

型を取得

返り値は stringlistsetzsethashnone など

> type "キー"

削除

削除されると 1、 削除されない、もしくはキーが存在しない場合は 0を返す

> del "キー"

存在判定

DBに存在すれば 1、存在しない場合 0 を返す

> exists "キー"