ドットインストールのRedis入門で勉強しました
勉強記録
本日2回目のブログ更新です!
今日は午前中にNoSQLの基礎について学んだので、午後はドットインストールの「Redis入門」を見ながら、様々なコマンドを自分でも打ってみながら学びました。
Redisとはなにか
インメモリデータベース(メモリに展開するのですごく速い)
でもメモリなので容量が少ない
全体ではなく、大量かつ高速に処理したいものに部分的に使用
メモリなので何らかのトラブルがあってサーバーの電源が落ちた時など、データがなくなってしまう→永続化(定期的にディスクに書き出す)
複雑なデータ構造を扱うことができる
データ構造サーバーである
KVSとはなにか?
KVS=Key Value Store
値を持つときに、必ずキーとバリューのセットで保存する。
ex) name “kanamama"
name がキー kanamamaがバリューとなる。
バリューは文字列だけでなく、さまざまなデータタイプがある
・String : 個々の要素
・List : 順番に並べた複数の要素で先頭や末尾にデータを登録が得意(時系列的なデータに使用)
・Set : 順不同の複数の要素(重複を許さない)集合の演算ができるので、タグやソーシャルグラフ
・Sorted Set : Setの特徴を持ちつつ、個々の要素にスコア付き(ランキングなどに使用)
・Hash : 連想配列
Redisを起動する
・サーバーの起動と終了
起動:redis-server
強制終了 : CTRL+C
redis-server —versionでバージョンの確認
・クライアントの起動と終了
起動:redis-cli
終了 : exit
shutdown その時点でのデータを保存してからサーバーをシャットダウン
データベースの選択とデータの保存
・データベースの選択
クライアントからアクセスしたときにselectコマンドで実行することができる
DBは0~15番がデフォルトで用意されている
名前をつけられるわけではなく、番号で切り替える
select データベースの番号
・データの保存
バックグラウンドで保存 : bgsave
String型を使う
・データの格納
set key value
・データの取得
get key
get key key key で複数取得
キーとバリューで管理しているので、キーが同じだと上書きされる
・incrとdecr
incr 1増やす / incrby 数字 複数増やす
decr 1減らす / decrby 数字 複数減らす
ex) set score 100 →100
incr score →101
decrby score 10 → 91
KEYの操作
・キーの一覧が見たい
全部のキーを見たい : keys *
mを含むキーだけみたい : keys*m*
キーがあるのか知りたい : exists キー名
・キーの名前を変更したい
rename 変更前キー名 変更後キー名
・キーを削除したい
del キー名
・キーに有効期限をつけることができる
expire キー名 秒数
ex) expire age 5
5秒だけつかえるageというキーになる
・ランダムにキーを振りたい
randomkey
List型を使う
要素の追加:( l / r )push 先頭( l )か末尾( r )か
要素の削除:( l / r )pop
ex)
rpush mycolor pink
rpush mycolor green
rpush mycolor red
rpush mycolor yellow
mycolorというキーの要素の末尾に色名を順に追加
・格納されている要素を並べて確認する
lrange キー名 0 3 要素の0~3(1~4番目の要素)を表示
lrange キー名 0 -1 逆方向から1番目=末尾
・ある特定の位置にあるものをとりたいとき
lindex キー名 2 指定したキーの2番目(3番目)を取得
・キーに今いくつ要素があるか確認する
llen キー名
・リストをトリムする
ltrim キー名 0 2 先頭の3つだけになる
Set型を使う
追加:sadd
削除 : srem
一覧:smembers
和集合:sunion
積集合:sinter
差集合:sdiff
・新しいsetを作りたい時
ex)sunionstore myunion myset1 myset2
myset1とmyset2を合わせたmyunionという新しいsetを作成
Sorted Set型を使う
値に対してスコアがつく(ランキングデータなどによく使われる)
追加:zadd
削除:zrem
一覧:zrange スコアが低い順
逆にしたいときは、zrevrangeをつかう
ランク:zrank ランクは0から
逆にしたいときは、zrevrank
Hash型を使う
追加 : hset, hmset
取得 : hget, hmget
一覧:hlen
キーを一覧で見たい hkeys
バリューを一覧で見たい hvals
全て一覧でみたい hgetall
sortを使う
List
Set
Sorted Set に使える 並び替え
type キー名 にすると何型で作ったのか確認できる
sort キー名 desc で降順
sort キー名 desc limit 0 3
limitをつけることでsortする数を指定できる(これは0から3つということだから、上位3つを並べるということ)
さらに、
sort mycolor だと、色名だけでスコアとか入ってないから、エラーがでる
sort mycolor alpha にすると、アルファベット順にソートしてくれる
逆にしたいときは、sort mycolor alpha desc
multi/execを使う
Redisで使えるトランザクションに似たもの
multi
処理
処理
処理
exec/discard
処理がまとめて行われる
実行したいときはexec やめたいときはdiscard
処理をしている間は他の処理が割り込んでこない
トラブルで機械自体が落ちてしまったとき、なにもなかったことにするのではなく、落ちる前の処理は実行したことになる
→完全に整合性が保たれるわけではない