KVS型のインメモリDB、Redisの使い方をさらっと覚えたのでその際の学習メモを載せます。 習得に使ったサイトはドットインストールです。
Redisの特徴
- インメモリDBである
- つまり高速
- 永続化可能
- メモリ情報をdumpして再起動時に読み込む
- データ構造サーバ
- いくつかのデータ型が用意されている
- KVS
- Key Value Store
Redisのデータ型
- string: 個々のデータを保存
- グローバルな感じに保存する
- list: 順番に並べた複数の要素
- 時系列的なデータの保存
- set: 順不同の要素, 重複を許さない
- タグ、ソーシャルグラフ
- sorted list: setの特徴を持ちつつ、個々の要素にスコア付き
- ランキング
- hash
- 連想配列
- わかりやすいラベルと値のセット
Redisの起動と使用
- サーバの起動と停止
- 起動
$ redis-server
- 停止
- (CTRL+C)
- データが飛ぶ可能性があるので注意
- 起動
- クライアントの起動と終了
- 起動
$ redis-cli
- 停止
exit
- サーバは停止せずに終了
shutdown
- データをディスクに保存してからサーバを停止
- 起動
データベースの選択とデータの保存
- データベースの選択
select {index}
{index}
でデータベースのインデックスを指定- データベースに名前はつけられない
- データの保存
bgsave
- 保存先
- Redisサーバの立ち上げたディレクトリが保存場所
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