0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Redis

Last updated at Posted at 2017-12-01

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 で中身を見る事が出来て便利。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?