Redisとは?
Redisは、データ構造サーバーを実装するオープンソースソフトウェアプロジェクトである。いわゆるNoSQLデータベースの一つであり、Redis Labs(英語版)がスポンサーとなって開発されている。ネットワーク接続されたインメモリデータベースでかつキー・バリュー型データベース(英語版)であり、オプションとして永続性を持つ。*1
一言で説明すると、Redisはオープンソースのインメモリデータストア。データベースやキャッシュ、メッセージブローカーとして利用されている。*2
Pub/Sub (Publish/Subscribe) とは?
日本語では出版-購読型モデルとも呼ばれる。
非同期メッセージングパラダイムの一種であり、メッセージの送信者(出版側)が特定の受信者(購読側)を想定せずにメッセージを送るようプログラムされたものである。出版されたメッセージにはクラス分けされ、購読者に関する知識を持たない。購読側は興味のあるクラスを指定しておき、そのクラスに属するメッセージだけを受け取り、出版者についての知識を持たない。出版側と購読側の結合度が低いため、スケーラビリティがよく、動的なネットワーク構成に対応可能である。*3
Installing Redis
$ wget http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make
make完了後、redis-stable/src/ に様々な実行可能ファイルが生成される。 今回は、redis-server, redis-cli を利用する。
- redis-server is the Redis Server itself.
- redis-sentinel is the Redis Sentinel executable (monitoring and failover).
- redis-cli is the command line interface utility to talk with Redis.
- redis-benchmark is used to check Redis performances.
- redis-check-aof and redis-check-dump are useful in the rare event of corrupted data files.
Pub/Sub機能を試す
- Redis サーバを起動する
- クライアント1 で、channel ‘foo’ を subscribe する
- クライアント2 で、subscribeされている channel ‘foo’ に対して message ‘hello world!’ を publish する
step1. start redis server
$ ./src/redis-server _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.2.9 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: xxxx `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-'
でっかいロゴが出てきた。
step2. クライアント1で channel ‘foo’ を subscribe する
[client 1]
$ ./scr/redis-cli 127.0.0.1:6379> SUBSCRIBE foo Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "foo" 3) (integer) 1
step3. クライアント2 で、message ‘hello world!’ を publish する
[client 2]
$ ./src/redis-cli 127.0.0.1:6379> PUBLISH foo 'hello world!' (integer) 1 127.0.0.1:6379>
publishすると、client 1のスクリーン上に以下のようにメッセージ ‘hello world!’ が表示される
[client 1]
1) "message" 2) "foo" 3) "hello world!"
references
refered to the Redis Quick Start – Redis