よんログ

Redis

基本操作

SET コマンドでキーに値を格納できる。

SET key

GET コマンドでキーに格納された値を取得できる。

GET key

DEL コマンドでキーを削除できる。

DEL key [key ...]

キーが存在しているかを調べるには EXISTS コマンドで確認できる。

EXISTS key

KEYS コマンドでパターンにマッチするキーを列挙できる。キーのパターンにはGlobが使える。

KEYS pattern

KEYS コマンドはパターンにマッチするキーをすべて列挙してしまうため、特にキーの多い本番データベースでは実行しないことが推奨されている。

代わりに SCAN コマンドを使うようにする。 SCAN コマンドは KEYS コマンドと同様、パターンにマッチするキーをすべて列挙するが

  • 値の型で絞り込み
  • 一度に列挙する数を指定
  • 検索結果のページング

を行うことができるため、本番環境では KEYS ではなく SCAN を使うことが推奨される。

SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

データ構造

Redisにはストリング (string) やリスト、セット、ソート済みセットなどの型 (type) が存在する。

  • ストリング (string) 型
    • バイナリデータ
    • テキスト
    • 整数
    • 浮動小数点数
  • ハッシュ (hash)
  • リスト (list)
  • セット (set)
  • ソート済みセット (sorted set)

あるキーの型は TYPE コマンドで確認できる。

TYPE key

Redisのデータ構造はフラットなKVS (Key-Value Store) である。ハッシュやリスト、セット、ソート済みセットなどのコレクション型をネストすることはできない。Redisのデータ構造で深い階層構造を表現するには、複数のキーを用いてデータ構造をフラットにする必要がある。

  • user:1000
  • user:1000:followers

キーの命名規則

複数のキーを用いてデータ構造をフラットにする場合、命名規則としてキーの区切り文字を決めておくことが推奨される。 (前述の例では :)

複数コマンドの実行

複数コマンドを実行する場合、処理の中断により更新時異状が起きないよう配慮が必要である。 後述するトランザクション機能でこれを解決できる。

ストリング型

Redisではあらゆる単一の値はストリング (string) 型として表される。 一つのストリング型の値は512MBまでのデータを格納できる。

プログラミング言語の文脈で一般的に string は文字列と訳されるが、Redisの string を文字列と訳すとテキストの意味合いが強くなってしまうため、ここではストリングと訳している。

一方でストリング型に格納されている値の種類 (バイナリ, テキスト, 数値, 浮動小数点数) をエンコーディング (encoding) という。

  • ストリング (string) 型
    • バイナリデータ
    • テキスト
    • 整数
    • 浮動小数点数

あるキーに格納している文字列のエンコーディングは OBJECT ENCODING コマンドで確認できる。

OBJECT ENCODING key

テキストに対するコマンド

コマンド意味
STRLEN key文字列の長さを返す。
APPEND key value文字列の末尾に value を挿入する。

整数に対するコマンド

コマンド意味
INCR keykey に格納された整数を 1 だけ大きくする。
DECR keykey に格納された整数を 1 だけ小さくする。
INCRBY key incrementkey に格納された整数を increment だけ大きくする。
DECRBY key incrementkey に格納された整数を increment だけ小さくする。

浮動小数点数に対する操作

コマンド意味
INCRFLOATBY key incrementkey に格納された浮動小数点数を increment だけ大きくする。
DECRFLOATBY key incrementkey に格納された浮動小数点数を increment だけ小さくする。