GCP Redis の操作
GCP の Redis を操作していく。
前回、Redis インスタンスを作成することができた。
続いて、Redis インスタンスにデータをキャッシュできるか確認しようと思う。ここでは Python のプログラムを作成して、Redis の動作確認を行う。
前回はこちら→GCPを始める ~Cloud Memorystore for Redis~
前提条件
- VPC ネットワークを事前に作成していること。
- ファイアウォール ルールを事前に作成していること。
- VM インスタンスを事前に作成していること。
※[ネットワーク インタフェース] には、app-network
を設定してください。
Redis の準備
VM インスタンスと同じリージョンで、Redis インスタンスを作成する。
※[承認済みネットワーク] にはapp-network
を設定してください。
VM インスタンスの準備
下記のコマンドを実行してインストールを行う。
$ sudo yum install python3 $ sudo pip3 install flask redis
アプリケーションファイルを作成する。
$ touch app.py
下記をapp.py
にコピーアンドペーストする。
※ホストは、Redis インスタンスの IP アドレスを指定してください。
import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='your redis ip address', port=6379) cache_ttl = 5 def get_hit_count(): retries = 5 while True: try: hits:str = cache.get('hits') if not hits: hits = '0' new_value = int(hits) + 1 pipe = cache.pipeline() pipe.set('hits', new_value) pipe.expire('hits', cache_ttl) pipe.execute() return cache.get('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() return 'Hello World! I have been seen {0} times.'.format(int(count))
環境変数を設定する。
$ export FLASK_APP=app.py $ export FLASK_RUN_HOST=0.0.0.0
FLASK を実行する。
$ flask run
動作確認
Webブラウザで VM インスタンスのポート5000へアクセスする。 画面を更新するごとに、アクセス回数が1増えるようになっている。 また、Redis の TTL を5秒に設定しているため、5秒後にアクセスすると1から再カウントされる。
終わりに
Redis は簡単に利用できることがわかった。
ただ、キャッシュだけではデータが消えてしまうため、永続化するために Bigtable にも挑戦していこうと思う。