hubot経由でRedisへの簡易なアクセスを可能にするhubot-scriptを書きましたので、誰か使う人がいるかもと思いご紹介します。
Heroku上のhubotでRedis To Go等を利用しているのであれば、scriptを導入するだけで、現状の環境変数を元に動作可能です。
このスクリプトによってチャット上の他のメンバもRedisへのアクセスが可能になるため、ご注意ください。
コマンドラインからRedisへアクセス(redis-cli利用)
仲間内で、HerokuにてRedis To Goを使ってhubotを動かしており、まれによくRedisのCLIコマンドから Redis To Goに接続してデータを変更したりバックアップしたりということをしています。
この場合には、Herokuのhubotの環境変数 REDISTOGO_URL
(Redis To Goを導入すると自動で設定されています)を参照して、redis-cli
コマンドでRedisに接続しています。
おおまかな手順は以下のとおりです。
HerokuのREDISTOGO_URLを確認
heroku config
コマンドで、Redisの接続先を確認します。
1 2 3 4 5 6 7 |
$ heroku config === hubot Config Vars BUILDPACK_URL: https://github.com/ddollar/heroku-buildpack-multi.git HUBOT_LOG_LEVEL: debug HUBOT_SLACK_TOKEN: xoxb-16777216-9r3wQlg81Sg-p72Yw3jFkrCh |
※:上記の値はダミーです
redis-cliでRedisサーバへ接続して操作
REDISTOGO_URL
の設定値から、認証用のパスワードが 8e80edfa170a887112054e5bd93a6873
、アクセス先のホスト名が foobar.redistogo.com
、ポートが 6789
であることが分かるので、redis-cli
コマンドで下記のように接続してデータを操作可能です。
(hubot-redis-brainを利用している場合はhubotのデータはhubot:storage
というキーに一纏めにしてJSONで格納されています)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ redis-cli -a 8e80edfa170a887112054e5bd93a6873 -h foobar.redistogo.com -p 6789 foobar.redistogo.com:6789> keys * 1) "hubot:storage" foobar.redistogo.com:6789> set foo 1000 OK foobar.redistogo.com:6789> set bar 2000 OK foobar.redistogo.com:6789> keys * 1) "foo" 2) "bar" 3) "hubot:storage" foobar.redistogo.com:6789> get foo "1000" foobar.redistogo.com:6789> get bar "2000" foobar.redistogo.com:6789> exit |
hubot-redis-testの場合
拙作のhubot-redis-testでは、redis-cliから接続して操作する場合とほぼ同様なイメージで利用できます。ただし、Redisのコマンドは一般的な動詞が多いため、Redisのコマンド名にredis-
プレフィックスを付加したものをhubot用のコマンド名にしています。
利用できるコマンドは今のところ、keys, get, set, exists, del
のみです。
コマンドラインからですが、下記のように利用できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
> hubot redis-keys * hubot:storage > hubot redis-set foo 1000 OK (foo=1000) > hubot redis-set bar 2000 OK (bar=2000) > hubot redis-keys * foo,bar > hubot redis-get foo 1000 > hubot redis-del foo 1 (foo is deleted) > hubot redis-keys * bar |