Redis とは、key-value store。ある文字列に割り当てられたデータを検索する仕組み。データはメモリに保存される。永続化も出来る。
インストール
公式サイトのおすすめは自分で make する事らしい。
$ wget http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make
$ sudo make install
make test
はしないほうが良い。パスワードを聞かれてうざい。
サーバーを起動。ポート 6379 で起動する。
redis-server
別のターミナルからクライアントを起動してインタラクティブに試す。SET と GET でキーに値を入れたり読んでみる。キーは慣習で my:key のようにコロンで区切る事が多いが、内部的にコロンは特別扱いされない。
$ redis-cli
127.0.0.1:6379> SET my:key somevalue
OK
127.0.0.1:6379> GET my:key
"somevalue"
コマンドライン引数に直接 redis コマンドを入れる事も出来る。
redis-cli SET my:key somevalue
redis-server
を終了してみる。カレントディレクトリの dump.rdb にデータが保存される。
^C26341:signal-handler (1512099345) Received SIGINT scheduling shutdown...
26341:M 01 Dec 12:35:45.346 * Saving the final RDB snapshot before exiting.
26341:M 01 Dec 12:35:45.347 * DB saved on disk
26341:M 01 Dec 12:35:45.347 # Redis is now ready to exit, bye bye...
$ ls
dump.rdb
面白い事に、redis-server
を終了しても redis-cli
はすぐにはエラーにならない。なので redis-server
を一旦停止して別の redis-sever
を立ち上げても redis-cli
は何食わぬ顔して処理を続ける。
続きは interactive tutorial で勉強出来る。これも面白い。
色々な機能
存在確認。
127.0.0.1:6379> EXISTS my:key
(integer) 1
INCR で数字を増やす。SET を省略すると 0 が入ってる物とみなす。
127.0.0.1:6379> SET mynumber 10
OK
127.0.0.1:6379> INCR mynumber
(integer) 11
127.0.0.1:6379> INCRBY mynumber 10
(integer) 21
EXPIRE で有効期限の秒数を設定する。TTL で残りの有効期限を調べる。TTL = -1 は有効期限未設定、TTL = -2 は時期限切れを現す。
127.0.0.1:6379> SET timer hello
OK
127.0.0.1:6379> EXPIRE timer 60
(integer) 1
127.0.0.1:6379> TTL timer
(integer) 55
RPUSH でリストの後ろに追加する。Redis では、キーを予め SET しておかなくても要素を追加出来るし、要素がなくなると勝手にキーが消える。LRANGE で範囲内の要素を読む。LRANGE の範囲指定のマイナスは後ろからの位置を現す。
127.0.0.1:6379> RPUSH friends Alice
(integer) 1
127.0.0.1:6379> RPUSH friends Bob Charlie Dave
(integer) 4
127.0.0.1:6379> LRANGE friends 0 1
1) "Alice"
2) "Bob"
127.0.0.1:6379> LRANGE friends 0 2
1) "Alice"
2) "Bob"
3) "Charlie"
127.0.0.1:6379> LRANGE friends 0 -1
1) "Alice"
2) "Bob"
3) "Charlie"
4) "Dave"
HSET でハッシュを作成して HGET で取り出す。
127.0.0.1:6379> HSET secrets Alice alicesecret
(integer) 1
127.0.0.1:6379> HSET secrets Bob bobsecret
(integer) 1
127.0.0.1:6379> HGET secrets Alice
"alicesecret"
REDIS で使えるデータ
- ADD: 文字列
- RADD LADD: リスト
- SADD: セット
- ZADD: 順序付きセット
- HSET: ハッシュ
- GEOADD: 緯度経度で検索出来る情報
色々な技
データべースのすべてのキーを表示
redis-cli --scan --pattern '*'
全部削除
edis-cli flushall
GUI
Medis: https://github.com/luin/medis というのを使うと GUI で中身を見る事が出来て便利。