IBM Cloud Databases for Redisを試してみる

# はじめに

Redisは、オープンソース（BSD License）の（永続化も可能な）インメモリKey-Value型データストアです。データベースとして使用できる他、キャッシュとして使用するといった用途があります。No SQLの一種で、Valueとして連想配列、リストなどを持つことが可能です。

AWSでは、[Amazon ElastiCache for Redis](https://aws.amazon.com/jp/redis/)としてRedisが使用可能ですが、IBM CloudでもマネージドなRedis環境が提供されています。それが [IBM Cloud Databases for Redis](https://www.ibm.com/jp-ja/cloud/databases-for-redis)になります。

IBM Cloudでは、マネージドRedisとして Compose for Redis というサービスが提供されていましたが、こちらはカタログ上からは既に検索ができなくなっており、[Databases for Redisが後継サービスという位置づけ](https://cloud.ibm.com/catalog/services/databases-for-redis-group)になっているようです。

当記事では、IBM Cloud Databases for Redisのインスタンスを作成し、そのインスタンスに対して、Mac用のRedisクライアントであるMedisを使用してアクセスしてみます。


# Databases for Redisインスタンスの作成

[Databases for Redisのカタログページ](https://cloud.ibm.com/catalog/services/databases-for-redis)にアクセスします。

リージョンを「東京」に変更し、「作成」ボタンをクリックします。
なお、Databases for Redisではライト・プランは提供されておらず、時間単位に課金が発生しますのでご注意ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/62674a13-f0a4-8333-dd19-5b04076aeb82.png)

Redisのプロビジョニングが開始され、しばらくすると以下のように「アクティブ」ステータスとなります。これでプロビジョニングが完了です。
中身を見てみるため、「Databases for Redis-xx」の部分をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/a24dd570-285e-163b-8eb6-0a874e50f9dd.png)

Redisの管理画面のOverviewです。主にRedisインスタンスに接続するためのエンドポイントなどの情報が表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/a5eb3cad-21e8-efbd-176d-726da91133c7.png)

「Resources」タブでは、Redisインスタンスのリソースを設定することができます。メモリ、ディスク、専有CPUコア数を増減することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/1e17c521-ade1-0205-6e20-90c9819f52de.png)

「Backups」タブでは、バックアップデータの確認、オンデマンドでのバックアップ実行、および、バックアップからのリストアが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/5f57ac72-a829-0bd2-e95c-c7d62dae9738.png)

「Observability」タブでは、Activity Tracker with LogDNAでのアクティビティロギング、Log Analysis with LogDNAでのログ収集を設定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/f1ed85be-4638-8439-3124-d72a86097798.png)


# 管理パスワードの設定

次に、作成したRedisインスタンスに接続するためのパスワードを設定していきます。

「Settings」タブを選択し、「New Password」に新しいパスワードを入力し、「Update Password」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/9a6e660c-47e1-0a67-da4f-1bf78428e6a7.png)

これにより、管理用のadminアカウントのパスワードを設定・変更することができます。



# IBM Cloud CLIでのアクセス

IBM Cloud CLIが未導入の場合は、[IBM Cloud CLIの概説](https://cloud.ibm.com/docs/cli?topic=cli-getting-started&locale=ja)から導入ください。

さらに、IBM Cloud Databasesを扱うためのプラグインであるCloud Databases CLIプラグインが必要になります。上記ページの手順では導入されないので追加で導入します。以下のコマンドを実行してください。

```
ibmcloud plugin install cloud-databases
```

RedisにアクセスするためにはRedisクライアントも必要となりますので、Redisのクライアントとして、IBM製（？）のredliを導入します。

[redliのページ](https://github.com/IBM-Cloud/redli/releases)にアクセスし、最新バージョンのtar.gzファイルをダウンロードします。Macの場合は「redli_<バージョン番号>_darwin_amd64.tar.gz」というファイル名になります。

このtar.gzファイルを展開し、実行権限を付与します。

```
tar xzvf redli_0.5.2_darwin_amd64.tar.gz
chmod +x redli
```

Macの場合、開発元が未確認のMacアプリケーションをデフォルトで開けないため、このまま「redli」と打っても実行できません。そのため、展開したディレクトリをFinderで開き、ファイル「redli」をCtrlキーを押しながらクリックし、「開く」で一度開いてください。

参考：[開発元が未確認のMacアプリケーションを開く](https://support.apple.com/ja-jp/guide/mac-help/mh40616/mac)

一度開けば通常通りに実行できますので、PATHが設定されている場所にファイル「redli」をコピーします。

```
sudo cp redli /usr/local/bin
```

これでredliコマンドを使用することができるようになりました。

それではRedisにアクセスします。
まずIBM Cloudにログインします。

```
ibmcloud login -a cloud.ibm.com -r jp-tok
```
Redisに接続します。
Cloud Databasesプラグインの``ibmcloud cdb``コマンドを使います。
``"Databases for Redis-2u"``の部分は、作成したDatabases for Redisインスタンスの名前です。スペースが入る場合は（デフォルトでは入っています）ダブルクォートで囲ってください。

```
❯ ibmcloud cdb cxn -s "Databases for Redis-2u"
Database Password>> 
Connected to 5.0.5
```

これでRedisに接続できました。
接続後、setコマンドで、``key=foo, value=bar``というデータを登録します。

```
> set foo bar
OK
> get foo
"bar"
```


# Medisでのアクセス

RedisのMac用GUIクライアントであるMedisを導入します。
Medisの導入については以下の記事を参照して実施ください。

[Redisのmac用GUIクライアント](https://qiita.com/rsuzuki/items/ff0891e4ae7e44ab7946)


また、アクセスにはTLS証明書ファイルが必要となります。
Databases for Redisインスタンスの管理ページのOverviewタブで、赤枠部分の「Download」ボタンをクリックし、TLS certificateファイルをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/758db050-313c-a51f-2d99-2fcc086e4114.png)


Medisを起動し、それぞれ以下の値を入力し、「Connect」ボタンをクリックします。

- Redis Host　：　Redisインスタンス管理ページのOverviewタブに表示される「Public Endpoints」の「Hostname」
- Port　：　Redisインスタンス管理ページのOverviewタブに表示される「Public Endpoints」の「Port」
- Password　：　上記で設定したadminのパスワード
- SSL(checkbox)　：　チェックを付ける
- Certificate(SSLにチェックを付けると表示される)　：　上記でダウンロードしたTLS certificateファイル

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/5e2891b5-6221-3177-e674-605da4d1aed0.png)


接続が成功すると、以下のように先ほど登録した``key=foo, value=bar``が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/e4a69830-f9cf-2e39-0ec3-7fc318c8ebf0.png)


以上の通り、Databases for Redisのインスタンスを作成し、GUIクライアントでアクセスすることができました。