simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

Azure:Redis Cacheサーバーを立ててみる

確認したいこと

やりたいのはトークンによる認可と文字列データのやりとり
バックアップの取得を自動化して解析結果を利用かな

はじめての Azure

Azure を使ったことないので、ちょっとどんなものなのか見てみます。
とりあえずアカウントを作って、コンソール画面を開ける状態に

f:id:simplestar_tech:20191027222336p:plain
ホーム画面

はじめての Azure Redis

>Azure Redis Cacheは、Azureのデータセンター内にホスティングされたRedisを使用することができるサービスです。通常のRedis同様の機能に加え、可用性や運用保守の面でのサポートがプラットフォームとして提供されているものと捉えることができます。
>現在はAzure Redis Cacheのみがキャッシュサービスとして提供されています。
「Basic」レベルでは単一ノードのみで提供
「Standard」レベルでは、プライマリノードとセカンダリノードと呼ばれる2つのノード間で同じデータの共有(レプリケート)をして可用性を高めることができる「Premium」レベルでは特徴としてキャッシュ上のデータをディスクに永続化することが可能

そう、ディスクに保存して永続化や、インポート、エクスポートするには Premium でなければなりません。

Azure Redis Cache の作り方

Redis Cache があったので、そこで次のとおり入力して作成します。

f:id:simplestar_tech:20191029212132p:plain
Redis Cache 作成画面

Azure Redis Cache の使い方

繋ぐことも確認できました。
ローカルで anaconda をインストールして python 実行環境を用意し、以下の redis クライアントから接続と利用を試みます。
passwordにはプライマリのキーの文字列を与えます。

from __future__ import print_function
import redis
import uuid

#elasticache settings
r = redis.StrictRedis(host='aaaaaaaa.redis.cache.windows.net', port="6380", db=0, password='uXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXU=', ssl=True)

def handler(event, context):
    """
    This function puts into memcache and get from it.
    Memcache is hosted using elasticache
    """

    #Create a random UUID... this will be the sample element we add to the cache.
    uuid_inserted = uuid.uuid4().hex
    #Put the UUID to the cache.
    r.set('uuid', uuid_inserted)

    r.set('000000', '00000000')
    r.set('000001', '00000001')
    r.set('000002', '00000002')
    r.set('000003', '00000003')
    r.set('FFFFFC', 'FFFFFFFC')
    r.set('FFFFFD', 'FFFFFFFD')
    r.set('FFFFFE', 'FFFFFFFE')
    r.set('FFFFFF', 'FFFFFFFF')

    #Get item (UUID) from the cache.
    uuid_obtained = r.get('uuid')
    if uuid_obtained.decode("utf-8") == uuid_inserted:
        # this print should go to the CloudWatch Logs and Lambda console.
        print ("Success: Fetched value %s from memcache" %(uuid_inserted))
    else:
        raise Exception("Value is not the same as we put :(. Expected %s got %s" %(uuid_inserted, uuid_obtained))

    return "Fetched value from memcache: " 

handler(None, None)

結論

動作に問題はありませんでした。
問題は金額。
一番安くて毎月 4.6 万円

同じ機能を AWS が月 0.4万円で提供している+API Gateway から直接 API で利用できるので AWS を使うことにしました。

ステップ by ステップの詳しい手順は自分の過去記事の参考にしてみます。
まじ過去の自分ありがとう

simplestar-tech.hatenablog.com

simplestar-tech.hatenablog.com

simplestar-tech.hatenablog.com