Redis学習メモ

KVS型のインメモリDB、Redisの使い方をさらっと覚えたのでその際の学習メモを載せます。 習得に使ったサイトはドットインストールです。

Redisの特徴

  • インメモリDBである
    • つまり高速
  • 永続化可能
    • メモリ情報をdumpして再起動時に読み込む
  • データ構造サーバ
    • いくつかのデータ型が用意されている
  • KVS

Redisのデータ型

  • string: 個々のデータを保存
    • グローバルな感じに保存する
  • list: 順番に並べた複数の要素
    • 時系列的なデータの保存
  • set: 順不同の要素, 重複を許さない
  • sorted list: setの特徴を持ちつつ、個々の要素にスコア付き
    • ランキング
  • hash
    • 連想配列
    • わかりやすいラベルと値のセット

Redisの起動と使用

  • サーバの起動と停止
    • 起動
      • $ redis-server
    • 停止
      • (CTRL+C)
      • データが飛ぶ可能性があるので注意
  • クライアントの起動と終了
    • 起動
      • $ redis-cli
    • 停止
      • exit
        • サーバは停止せずに終了
      • shutdown
        • データをディスクに保存してからサーバを停止

データベースの選択とデータの保存

  • データベースの選択
    • select {index}
      • {index}でデータベースのインデックスを指定
        • データベースに名前はつけられない
  • データの保存
    • bgsave
    • 保存先

string型の扱い方

  • グローバルなkey-value
  • データの保存
    • set {key} {value}
    • mset {key1} {value1} {key2} {value2} {key3} {value3} ...
  • データの取得
    • get {key}
    • mget {key1} {key2} {key3}
  • 整数のインクリメント/デクリメント
    • インクリメント
      • incr {key}
      • incrby {key} {increment}
    • デクリメント
      • decr {key}
      • decrby {key} {decrement}

Keyの操作

  • キーを確認
    • keys {pattern}
    • {pattern}には以下のような文字を入れる
      • keys *: 全部検索
      • keys *m*: mを含むキーのみ検索
  • キーの存在を確認
    • exists {key}
      • 1: true, 存在する
      • 0: false, 存在しない
  • キーの変更
    • rename {key} {newkey}
  • キーの削除
    • del {key}
  • キーの寿命設定
    • expire {key} {seconds}
  • ランダムにキーを取得する
    • randomkey

list型の扱い方

  • 1つのキーで複数の値を管理するデータ型
  • データの追加
    • 先頭への追加はlpush {key} {value}
    • 末尾への追加はrpush {key} {value}
  • データの削除
    • 先頭要素の削除はlpop {key}
    • 末尾要素の削除はrpop {key}
    • インデックス指定での削除はlindex {key} {index}
  • データの確認
    • lrange {key} {start} {stop}
    • stop-1を指定すると後ろから1番目 = 最後の値と認識してくれる
  • listの長さを確認
    • llen {key}
  • listの長さを固定する
    • ltrim {key} {start} {stop}

set型の扱い方

  • 集合としてデータを扱う場合のデータ型
  • データの追加
    • sadd {key} {member}
  • データの削除
    • srem {key} {member}
  • データの一覧
    • smembers {key}
  • 和集合
    • sunion {key1} {key2}
  • 差集合
    • sinter {key1} {key2}
  • 積集合
    • sdiff {key1} {key2}
  • 集合の保存
    • 各集合コマンドにstore {newkey}をつけてあげると演算した集合結果を保存できる
      • sunionstore {newkey} {key1} {key2}
      • sinterstore {newkey} {key1} {key2}
      • sdiffstore {newkey} {key1} {key2}

sorted set型の扱い方

  • 値に対してscoreというインデックスがついたset型
  • データの追加
    • zadd {key} {score} {member}
  • データの削除
    • zrem {key} {member}
  • データの一覧
    • zrange {key} {start} {stop}
    • リバース
      • zrevrange {key} {start} {stop}
  • ランクの確認
    • zrank {key}
    • リバース
      • zrevrank {key}

hash型データの扱い方

  • 連想配列なデータ型
    • string型に名前をつけるイメージ
  • データの保存
    • hset {key} {field} {value}
    • hmset {key} {field1} {value1} {field2} {value2} {field3} {value3}...
  • データの取得
    • hget {key} {field}
    • hmget {key} {field1} {field2}
  • データの長さ
    • hlen {key}
  • データの持つキーの一覧
    • hkeys {key}
  • データの持つ値の一覧
    • hvals {key}
  • データの持つキー値のセットの一覧
    • hgetall {key}

sortの使い方

  • 以下のデータ型に対して並び替えを行える
    • list
    • set
    • sorted set
  • 型をチェックするには...
    • type {key}
  • 昇順に並び替える
    • sort {key}
  • 降順に並び替える
    • sort {key} desc
  • 個数を限定する
    • sort {key} limit {start} {stop}
  • 文字列の並び替え
    • sort {key} alpha

トランザクション処理