30代専業主婦の独学エンジニア挑戦ブログ

実務未経験の30歳の専業主婦が独学でエンジニアを目指すブログです

ドットインストールの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
mset  key value 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型を使う

[key][value] valueに複数の値を入れられるのが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型を使う

valueの中にさらにkeyとvalueを入れることができる
 
追加 : 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
処理をしている間は他の処理が割り込んでこない
トラブルで機械自体が落ちてしまったとき、なにもなかったことにするのではなく、落ちる前の処理は実行したことになる
→完全に整合性が保たれるわけではない