2019年5月27日月曜日

RedisCloud を使ったみた

概要

RedisCloud は redislabs が提供するクラウドサービスです
30MB までの使用であれば無料で使うことが可能です
今回は登録から実際に Redis インスタンスを作成し redis-cli での接続テストまで行ってみました

環境

  • macOS 10.14.5
  • redis-cli 5.0.5

アカウント登録

まずはアカウント登録します
メールアドレスがあれば登録できます

メールが届くとアカウント登録するフォームの URL が記載されているのでアクセスして登録しましょう
Company は個人利用なので「personal」と入れておきました

そのままプランを設定しましょう

今回は 30MB の無料枠を使うので Essentials プランを選択します

そしてサブスクリプションですが Cache の「30MB free」を選択しましょう
Cache 以外にも Standard と Multi-AZ が選択できます
とりあえず今回は検証だけなので Cache にしておきましょう
クラウドも AWS or GCP が選択できるのでお好きなほうを選択してください

インスタンス作成

次に Redis インスタンスの作成画面になります
基本はデフォルトのままで OK です
Database Name にだけ好きな名前を入力してください

Protocol は Redis にしましょう
Cache を選択しているので Replication や Data Persistence は自動で「Disabled」「None 」になっています
アクセスするにはエンドポイントとパスワードが必要になります
エンドポイントはインスタンス作成後に確認できます
パスワードは Access Control & Security に自動で入力されるので右側のパスワードを表示するボタンを押してメモしておきましょう

Data Eviction Policy はデータを自動で削除するポリシーを選択します
今回はデフォルトの volatile-lru を選択しています
volatile-lruexpire が設定されたキーの expire が来た順番から削除してくれるポリシーです
Alert Settings は指定の値までメモリ消費した場合にアラートを上げることができます
今回はデフォルトの 80% のままにしています
アラートはアカウント登録時のメールアドレスに送信されるようです

入力内容を確認したら「Activate」を選択しましょう

エンドポイント確認

作成されたらエンドポイントを確認しましょう
インスタンスが作成されるまで Endpoint の欄には何も表示されていません

redis-cli で動作確認

では redis-cli で確認します
-h オプションでホストを指定し -p でポートを指定しましょう

redis-cli -h redis-15671.c16.us-east-1-2.ec2.cloud.redislabs.com -p 15671                     
redis-15671.c16.us-east-1-2.ec2.cloud.redislabs.com:15671> set a b                                                               
(error) NOAUTH Authentication required
redis-15671.c16.us-east-1-2.ec2.cloud.redislabs.com:15671> auth xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OK
redis-15671.c16.us-east-1-2.ec2.cloud.redislabs.com:15671> set a b
OK
redis-15671.c16.us-east-1-2.ec2.cloud.redislabs.com:15671> get a
"b"

あとはアクセスする前に auth コマンドを実行しましょう
インスタンス作成時に確認したパスワードをここで入力します

Ruby から動作確認

Ruby からも確認してみました
gem のインストール手順などは省略しますが簡単な動作確認のスクリプトは以下の通りです

require 'redis'

redis = Redis.new(url: "redis://:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@redis-15671.c16.us-east-1-2.ec2.cloud.redislabs.com:15671")

redis.set('b', 'b')
puts redis.get('b')

ポイントはパスワードの前のコロンを忘れないようにしましょう
URI のフォーマットで user:pass と指定する必要があるためです
ユーザは今回指定が必要ないためコロンの前に何も記述していないだけです

最後に

redislabs の RedisCloud を使ってみました
かなりシンプルな作りで簡単に使えると思います
ElastiCache や MemoryStore はクラウド内部からしか使えないのが前提でしたが RedisCloud は外部のどこからでも使うことができます
故にアンセキュアではあるのですがそこはエンドポイント名とパスワードの複雑さでカバーしている感じだと思います

30MB であれば無料で使えるのでとりあえず Redis がほしい場合などにはかなり重宝するかなと思います
プロダクションで使う場合には Pro プランや Standard, Multi-AZ サブスクリプションを検討しましょう

0 件のコメント:

コメントを投稿