· ストレージとデータベース · 4 min read
Cloud Memorystore: Redis キャッシュの設定と利用法
Google CloudのマネージドRedisサービス、Cloud Memorystoreの導入から運用までを解説します

Cloud Memorystoreとは
Cloud Memorystoreは、Googleがフルマネージドで提供するRedisサービスです。アプリケーションのパフォーマンスを向上させるための高速なインメモリキャッシュとして利用できます。
セットアップと基本設定
インスタンスの作成
- Google Cloud Consoleにアクセス
- Cloud Memorystoreのページに移動
- 「インスタンスを作成」をクリック
- 以下の基本設定を実施:
- インスタンスID
- 容量
- Redisのバージョン
- リージョン/ゾーン
セキュリティ設定
認証設定
from google.cloud import redis_v1
client = redis_v1.CloudRedisClient()
ネットワーク設定
VPCネットワークとの接続設定が重要です:
- 専用のVPCを作成
- サブネットの設定
- ファイアウォールルールの追加
パフォーマンスチューニング
キャッシュ戦略
- TTL(Time To Live)の設定
- エビクションポリシーの選択
- メモリ使用率の監視
トラブルシューティング
接続の問題
1. 接続タイムアウトエラー
- 症状:
Connection timed out
エラーが発生 - 一般的な原因:
- VPCネットワークの設定ミス
- ファイアウォールルールの不備
- アプリケーションとMemorystoreインスタンスが異なるリージョンに存在
# 接続テストのサンプルコード
import redis
try:
r = redis.Redis(
host='INSTANCE_IP_ADDRESS',
port=6379,
socket_timeout=5
)
r.ping()
except redis.TimeoutError:
print("Connection timed out")
2. 認証エラー
- 症状:
NOAUTH Authentication required
エラー - 解決手順:
- IAMの権限を確認
- 認証情報の再設定
- サービスアカウントの設定確認
パフォーマンスの問題
1. レイテンシーの増加
監視すべきメトリクス:
redis_commands_latency
redis_commands_duration
- ネットワークレイテンシー
対処方法:
- インスタンスのサイズアップ
- コネクションプールの最適化
- キャッシュヒット率の改善
2. メモリ使用率の問題
症状:
OOM (Out of Memory)
エラー- パフォーマンス低下
解決策:
# メモリ使用率の確認
info = redis_client.info()
used_memory = info['used_memory_human']
maxmemory = info['maxmemory_human']
メモリポリシーの見直し:
CONFIG SET maxmemory-policy allkeys-lru
キー有効期限の設定:
EXPIRE mykey 3600 # 1時間後に期限切れ
複製の問題
1. レプリケーションラグ
モニタリング方法:
redis_replication_offset
メトリクスの監視- レプリケーションヘルスチェック
対処手順:
- ネットワーク帯域幅の確認
- レプリケーション設定の見直し
- 必要に応じてインスタンスタイプのアップグレード
2. フェイルオーバーの問題
- 自動フェイルオーバーの確認:
gcloud redis instances describe INSTANCE_ID \ --region=REGION
システムメンテナンス
1. バックアップとリストア
- バックアップの失敗:
- ストレージ容量の確認
- IAM権限の確認
- バックアップ設定の見直し
2. バージョンアップグレード
- アップグレード時の注意点:
- メンテナンスウィンドウの設定
- アプリケーション互換性の確認
- ロールバックプランの準備
モニタリングとアラート
重要なメトリクス:
- メモリ使用率
- 接続数
- キャッシュヒット率
- レイテンシー
アラート設定:
# Cloud Monitoring APIを使用したアラート設定 from google.cloud import monitoring_v3 client = monitoring_v3.AlertPolicyServiceClient() # メモリ使用率が90%を超えた場合のアラート condition = monitoring_v3.AlertPolicy.Condition( display_name="High Memory Usage", condition_threshold={ "filter": 'metric.type="redis.googleapis.com/memory/usage"', "comparison": "COMPARISON_GT", "threshold_value": 90.0, } )
ベストプラクティスとTips
定期的なヘルスチェック実装:
def health_check(): try: return redis_client.ping() except redis.ConnectionError: return False
エラーハンドリング:
from redis.exceptions import ConnectionError, TimeoutError try: redis_client.set('key', 'value') except ConnectionError: # フォールバックメカニズムの実装 pass except TimeoutError: # リトライロジックの実装 pass
パフォーマンス最適化:
- パイプライン処理の活用
- バッチ処理の実装
- 適切なデータ構造の選択
より詳しい運用管理については、以下の書籍が参考になります:
『図解即戦力 Google Cloudのしくみと技術がこれ1冊でしっかりわかる教科書』 https://amzn.to/4djqPb0
参考資料
Share: