Redis Desktop Manager

表題のものがあるとのことなので試してみた。

■ 環境

  • Redis 3.0.5
  • Mac OSX (10.10.5)

■ Redis Desktop Manager

rdm-001

http://redisdesktop.com/

Download 0.8.3“から遷移したダウンロードページにて”Mac“用のバイナリをダウンロード。ダウンロードしたファイルは”redis-desktop-manager-0.8.3-2550.dmg“であった。

このファイルを展開し、実行する。

rdm-002

rdm-003

■ redis-server

`redis-server`をローカルで起動している。しばらく使っていなかったのでUpgradeした後に起動した。

$ brew update
$ brew upgrade redis
$
$ redis-server /usr/local/etc/redis.conf
$

■ 接続

Redis Desktop Manager“から接続確認。

rdm-004

接続先は上図の通りである。

rdm-005

Key/Value“の確認や各種操作ができるようだ。今後使ってみるとする。

以上。

■ 関連

MacにRedisをインストール

表題の通り。HomebrewのFormulaファイルにRedisの”3.0.0“が来たのでインストールする。

■ 環境

  • Redis 3.0.0
  • Mac OSX (10.9.5)
  • Homebrew

■ インストール

ローカルのFormulaファイルを更新して確認する。

$ brew update
$ brew info redis
redis: stable 3.0.0 (bottled), HEAD
http://redis.io/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/redis.rb
==> Caveats
To have launchd start redis at login:
    ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don't want/need launchctl, you can just run:
    redis-server /usr/local/etc/redis.conf

3.0.0“がインストール可能なので実行する。

$ brew install redis
==> Downloading https://homebrew.bintray.com/bottles/redis-3.0.0.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring redis-3.0.0.mavericks.bottle.tar.gz
==> Caveats
To have launchd start redis at login:
    ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don't want/need launchctl, you can just run:
    redis-server /usr/local/etc/redis.conf
==> Summary
    /usr/local/Cellar/redis/3.0.0: 9 files, 892K

■ 動作確認

先日のエントリと同様なので省略。

これでアプリケーションの動作確認がローカルのMacだけでも容易に可能だ。

以上。

■ 関連

RedisのPUBSUBコマンド

表題の通り。先日のエントリで『RedisのPUBSUBコマンドは後から追加されている』という事を書いた。実際にどういう結果を得られるのか確認してみる。

■ 環境

  • Redis 3.0.0
  • CentOS 6.4

■ HELPを確認

HELPコマンドで確認してみる。

127.0.0.1:6379> HELP PUBSUB

  PUBSUB subcommand [argument [argument ...]]
  summary: Inspect the state of the Pub/Sub subsystem
  since: 2.8.0
  group: pubsub

127.0.0.1:6379>

これだけではよくわからない。”subcommand“には何が指定できるのか?これより詳細なHELPを確認したいのだが方法がわからないので公式ページのマニュアルを参照する。

■ subcommand

PUBSUBコマンドの”subcommand”に指定できるのは下記の3つのようである。

  • CHANNELS
  • NUMSUB
  • NUMPAT

それぞれ確認してみる。

■ CHANNELS

PUBSUB  CHANNELS  [pattern]

チャンネルの一覧を取得することができる。サブコマンドの名称からもイメージが付きやすいだろう。別のターミナルでSUBSCRIBEコマンドを使用してチャンネルを登録した後に実行してみると下記のような結果になる。

127.0.0.1:6379> pubsub channels
1) "test"
127.0.0.1:6379>

test“チャンネルが存在している事がわかる。”pattern“でも出来るとの事なので試してみる。

127.0.0.1:6379> pubsub channels t*
1) "test"
127.0.0.1:6379>

pattern“に一致するチャンネルが全て取得できるようだ。ちなみにチャンネルが一つも存在しない状態で試してみると下記のような結果となる。

127.0.0.1:6379> pubsub channels
(empty list or set)
127.0.0.1:6379>

ここからもオンラインでのPub/Subとしてのみ使用可能だという事がわかるであろう。

■ NUMSUB

PUBSUB  NUMSUB  [channel-1 ... channel-N]

指定したチャンネルを登録(SUBSCRIBE)しているクライアントの数を取得できる。

127.0.0.1:6379> pubsub numsub test test2
1) "test"
2) (integer) 1
3) "test2"
4) (integer) 0
127.0.0.1:6379>

test“チャンネルを登録しているクライアントは”1“、”test2“チャンネルを登録しているクライアントは”0“である事がわかる。

■ NUMPAT

PUBSUB  NUMPAT

いくつの”pattern“が登録されているかを取得する事ができる。まずは登録側は下記のようにPSUBSCRIBEコマンドで登録してみている。

127.0.0.1:6379> psubscribe test* aha*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "test*"
3) (integer) 1
1) "psubscribe"
2) "aha*"
3) (integer) 2

上記のように2つの”pattern“を登録してみたところ、下記のような結果を得る事ができた。

127.0.0.1:6379> pubsub numpat
(integer) 2
127.0.0.1:6379>

pattern“数はわかるが、実際にどういった”pattern“が登録されているかはわからないようである。少々コマンドとしては微妙な感じがしなくもない。

以上。

■ 関連

RedisでPub/Sub

表題の通り。RedisにはPub/Subのコマンドが揃っているので簡易的であるが動作を確認してみる。

■ 環境

  • Redis 3.0.0
  • CentOS 6.4

■ Pub/Sub系コマンド

Redisで使用可能なPub/Sub系のコマンドは下記の通りである。

127.0.0.1:6379> help @pubsub

  PSUBSCRIBE pattern [pattern ...]
  summary: Listen for messages published to channels matching the given patterns
  since: 2.0.0

  PUBLISH channel message
  summary: Post a message to a channel
  since: 2.0.0

  PUBSUB subcommand [argument [argument ...]]
  summary: Inspect the state of the Pub/Sub subsystem
  since: 2.8.0

  PUNSUBSCRIBE [pattern [pattern ...]]
  summary: Stop listening for messages posted to channels matching the given patterns
  since: 2.0.0

  SUBSCRIBE channel [channel ...]
  summary: Listen for messages published to the given channels
  since: 2.0.0

  UNSUBSCRIBE [channel [channel ...]]
  summary: Stop listening for messages posted to the given channels
  since: 2.0.0

127.0.0.1:6379>

今回はこの中から下記コマンドのみを使用して試してみる。

  • PUBLISH
  • SUBSCRIBE

Pub/Subの名の通りである。

ちなみにほとんどのコマンドは”2.0.0“で追加されているが、”PUBSUB“コマンドのみ”2.8.0“で後から追加されたコマンドのようである。自身も記憶にないコマンドなので今度動作を確認してみる事にする。

■ 手順

下記手順で簡易的であるが動作を確認する。

  1. ターミナル1でSUBSCRIBEコマンドで”channel”を登録
  2. ターミナル2でPUBLISHコマンドで”channel”に対してメッセージ送信
  3. ターミナル1で登録した”channel”に送られたメッセージを受信

ターミナルは2つ用意して行う。

■ 手順1: “test”チャンネルに登録

ターミナル1で実行する。

127.0.0.1:6379> SUBSCRIBE test
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1

画面に表示されているが、登録したチャンネル(“test”)に送られてくるメッセージを読み込む為に待機している。

■ 手順2: メッセージ送信

ターミナル2で実行する。

127.0.0.1:6379> publish test aaa
(integer) 1
127.0.0.1:6379>

“test”チャンネルに”aaa”というメッセージを送信した。ここでの戻り値てある”(integer) 1“は、メッセージを受信したクライアント数のようだ。

■ 手順3: メッセージ受信

ターミナル1でメッセージが受信できているはずだ。

127.0.0.1:6379> SUBSCRIBE test
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1
1) "message"
2) "test"
3) "aaa"

2)が受信したチャンネル名称であり、3)が実際に受信したメッセージである。”SUBSCRIBE“コマンドは複数のチャンネルを登録可能であるから、2)で受信したチャンネル名称が必ず付いてくる。

ちなみにターミナル2でまったく別名称のチャンネルに対してメッセージを送信したところ、下記のような結果になった。

127.0.0.1:6379> publish test2 bbb
(integer) 0
127.0.0.1:6379>

受信したクライアントはいないので”0″が返却されているようだ。送信側もどれだけの効果があるのか?を知る為には、有益な数値なのかもしれない。ただし、RedisにおけるPub/Subはオンライン中にのみ使用可能なものであったと思う。つまりは後から今回のような”test2″チャンネルに送られたメッセージを引き出すことはできない。。のではなかっただろうか。そういう用途で使用するのであれば、機能としてPub/Subを持っているRedisではなく、Apache KafkaといったPub/Subシステム自体を導入する事が必要となってくるだろう。

以上。

■ 関連

CentOSにredisをインストール

表題の通り。3.0が”stable“になったので触ってみるべく、まずはCentOSにインストールする。

■ 環境

  • Redis 3.0.0
  • CentOS 6.4

■ コンパイル&インストール

まずは公式のドキュメントにある通り、単純にコンパイルだけを行い動作確認をしてみる。

$ wget http://download.redis.io/releases/redis-3.0.0.tar.gz
$ tar zxf redis-3.0.0.tar.gz
$ cd redis-3.0.0
$ make

コンパイルは正常に行えた。”README“を軽く読むと、インストール先は”/usr/local“配下であるようだ。make時に”PREFIX=/path/to“で変更する事も可能なようである。とりあえず”/usr/local“配下で問題ないのでインストールもしてしまう事にした。

$ sudo make install

■ 動作確認

とりあえずサーバが起動し、クライアントから接続が可能であるかだけを確認しておく。既に”/usr/local“配下にインストール済みなのでPATHも通っているはずである。Redisのサーバプロセスは、設定ファイルを使用しなければフォアグラウンドで起動するはずだったので、ターミナルを2つ用意して開始する。

$ redis-server
10946:C 10 Apr 19:05:35.590 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.0.0 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 10946
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

10946:M 10 Apr 19:05:35.593 # Server started, Redis version 3.0.0
  :

別の端末でクライアントも起動。

$ redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> quit
$

問題無さそうである。”3.0“から”cluster“関連も実装されたそうなので、今後はこれらを試していきたい。

以上。

■ 関連