GAE/Goの1.11でmemcachedを使おうと思ったところ、memcacheは使えなくなっており、Redis Labsを使うように推奨されていた。
ちなみに、GAEからcloud memory storeを使いたい場合、現在サーバレスVPC経由でつなぐ必要がある。2019年9月現在、USとEUリージョンしかサーバレスVPCが使えないので、AsiaにGAEが立っている場合は memory storeは使えません。
Cloud Memorystore for Redis インスタンスへの接続
Redis Labsとは
- RedisをCloudで使うことができるDBaas
- 可用性99.999%、200M ops/sec, sub millesec latency をうたっている。
プラン
- CloudプランとSoftware(オンプレ)プランがある
- Cloudプランは EssentialプランとProプランがある
- ProプランではActive-Active Geo Distributionプランや、Redis-on-Flash機能などの高機能がある。特に高機能を求めているわけではなく、普通にRedisをクラウドで使いたいという場合はEssentialで充分。
Essentialsプラン
- EssentialのプランにはさらにCacheプラン、Standardプラン、Multi-AZプランがある。
Cacheプラン
単純なキャッシュ機能として使うことを前提とされているプラン。不具合でプロセスが落ちたり、インスタンスが不具合になった場合には、データはなくなる。
Standardプラン
いわゆるRedisっぽい使い方。
レプリ機能や自動failover機能、永続化機能があり、インスタンスが落ちてもエラーとはならない。
Multi-AZプラン
その名の通りmulti-AZでインスタンスが準備され、AZまたいだ自動Failoverがされる。
Standardプランよりさらに高い可用性となる。可用性99.999%っていうのはこのプランで初めて達成されるのかな。。
機能について
Essentialsプランについてさらに深ぼる。
クイックセットアップ
クラスタリング
メモリ容量のオプションをPay-As-You-Go設定にすると Redis Cloud Essentials Clusteringが有効になる。今回は数MBのキャッシュサーバーとして使うだけなので関係なさそう。
データ消去ルール
設定可。
永続化
Redisが不具合おこしプロセス止まった場合に、永続化したデータから復旧が可能。
AOF方式(ファイル書き込み)とSnapshop方式(RDB書き込み)の2種類の方法が選べる。
- 書き込み毎にAOF -> 安全だけど、書き込み頻度が多くオーバーヘッド大きい
- 1秒毎にAOF -> 1秒以内のデータはロスする可能性がある、上よりましだがこちらもオーバーヘッドあり
- 定期的(1, 6, 12時間)にsnapshop作成 -> 定期以内のデータはロスする可能性があるが、オーバーヘッドは少ない。snapshotのほうがファイルよりリカバリがはやい。
GAEで軽く使ってみたとき思ったこと
- 無料枠だとコネクション数上限が30とかで、結構トラフィックのあるGAEから使おうとするとすぐにコネクション上限に達するので気をつける
- GCP + Redis Labs だと multi AZ プランがないので、どの程度の可用性なのがちょっと不明で怖い