###### tags: `redis` # Redis - インメモリDB - 高速 - 定期保存である程度の永続性担保 の キー バリュー ストア # キー DBのデータの保存は基本的に、 `key: data` となる ## キーの補助コマンド - keys [pattern] : パターンにハマるkeyを表示。ワイルドカードが使える* - exsits key : 存在すれば1、しなければ0 - rename key newkey : キーをリネーム(リネーム先がある場合は上書き) - del key : キーを消す - expire key second : キーに期限をつける(セッション管理など) - randomkey : 存在するキーをランダムに返す # データ型 基本は5つ - String - List - Set - Sorted Set(zset) - Hash キーに入っているデータ型を知るには typeコマンド ``` type key ``` # String ```redis= set key value get key mset key1 val1 key2 val2 mget key1 val1 ``` # List 並び替えは得意ではない 時系列順データを扱うのに優れる lpushのlはlistではなく left 代表的なコマンド ``` // push系 lpush key 1 2 3 4 5 // 左にプッシュする [5, 4, 3, 2, 1] rpush 9 8 7 6 // 右にプッシュする [5, 4, 3, 2, 1, 9, 8, 7, 6] // pop系 lpop rpop // 参照系 lrange key 0 -1 lindex key 4 // 4番目を見る llen // 長さを見る // トリミング(破壊的メソッド) ltrim key 1 3 ``` # Hash key valueセット ただし、valueの中に更に key valueをセットできる set : hset, hmset get : hget, hmset hset hash key, value hmset hash key1 value1 key2 value2 ..... hlen hash hkeys hash hvals hash hgetall hash h=hash , m=multi ```redis hset user name taguchi hmset user email taguchi@gmail.com score 120 hget user name email score hget ``` # Sortコマンド - List - Set - Sorted Set のタイプに使える タイプを調べるには type コマンド ```redis type sort or set or sortedset ``` sort list : 昇順に並べる sort list desc limit 0 3: 0から3番目までを降順に並べる sort list alpha : 数値ではない、文字列をアルファベット順に並べる # multi / exec Transactionっぽいもの 処理の途中でマシンが落ちると、ロールバックなどがされない よって正確なTransactionではないので 「っぽいもの」 複数処理をまとめて行う - multi : 複数処理の定義のはじめ - exec/discard : 実行/やっぱやめる ## 書き方 multi/ 処理 処理 処理 exec/discard multi ~ exec or discard の間の処理は連続で行われ 別の処理が割り込んだりしない ```redis multi incr counter incr visitor exec ``` # コマンドまとめ String ``` set <key> <val> get <key> mset mget ``` String(int) ``` // 数値の操作をできる // ++/-- incr decr // 一気に増減 incrby <key> <num> decrby <key> <num> ``` Key ``` keys <pattern> // * ワイルドカード使える exists <key> rename <old> <new> del <key> expire <key> <terms> randomekey ``` List(l) ``` // push/pop l/rpush <key> <el> l/rpop <key> <el> // 参照系 lrange <key> <start> <end> llen <key> lindex <key> <index> // 破壊的トリミング ltrim <key> <start> <end> ``` Set(s) ``` // add/remove sadd <key> <val> srem <key> <val> // メンバー参照 smembers <key> ``` Sorted Set (zと表記) ``` // add/remove zadd <key> <score:int> <val> zrem <key> <val> // ランキング順に並べる zrange <key> 0 -1 ```