🐦

Python + Azure で Redis をやってみた

2021/09/25に公開

Redis を試してみたのでまとめます。

ネットワーク接続された永続化可能なインメモリデータベース。連想配列(キー・バリュー)、リスト、セットなどのデータ構造を扱える。いわゆるNoSQLデータベースの一つ。
https://ja.wikipedia.org/wiki/Redis

AWS、GCP も Redis を扱えるサービスがありますが、扱いやすかったので Azureで試しました。

コードはこちら

なお、Azure Cache for Redis は Azure Potal のデータベースの中から選べます。

コード

import os
import environ
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent
env = environ.Env()
env.read_env(os.path.join(BASE_DIR, ".env"))
HOST_NAME = env("HOST_NAME")
ACCESS_KEY = env("ACCESS_KEY")

HOST_NAME と ACCESS_KEY は .envファイルに保存します。

なお HOST_NAME はプロパティのホスト名から、ACCESS_KEY はアクセスキーから拾えます。

import redis

r = redis.Redis(host=HOST_NAME,
    port=6380, db=0, password=ACCESS_KEY, ssl=True)

Redis は文字列型、リスト型、セット型 etc... とありますが、文字列、リストを試してみます。

https://weblabo.oscasierra.net/python/python-redis-py-1.html

https://redis.io/topics/data-types-intro

# 文字列型データ
result = r.set("Message", "Hello!, The cache is working with Python!")
print("SET Message returned : " + str(result))

result = r.exists('Message')
print("Num of Message's Keys is :" + str(result))

result = r.keys()
print("List of Keys is :", result)

result = r.get("Message")
print("GET Message returned : " + result.decode("utf-8"))

result = r.client_list()
print("CLIENT LIST returned : ")
for c in result:
    print("id : " + c['id'] + ", addr : " + c['addr'])

# リスト
result = r.rpush('name', 'Tom') # リストの末尾に追加
print("RPush", result)

result = r.rpush('name', 'Alex', 'John') # リストの末尾に追加
print("RPush", result)

result = r.lpush('name', 'Taro') # リストの先頭に追加
print("LPush", result)

result = r.lpush('name', 'Tetuo', "Suzuki") # リストの先頭に追加
print("LPush", result)

result = r.lpop('name') # リストの先頭から値を取り出して削除
print("LPop", result)

result = r.rpop('name')  # リストの末尾から値を取り出して削除
print("RPop", result)

result = r.keys() # 格納されている Key (Message、name)を出力
print("List of Keys is :", result)

result = r.lrange('name', 0, -1) # 最初から最後まで name のリストを出力
print("GET name returned : " , result)

result = r.delete('name') # name を削除
print("Delete", result)

result = r.keys()  # 格納されている Key (name は削除したので Message のみ)を出力
print("List of Keys is :", result)

以下のように出力されます。

SET Message returned : True
Num of Message's Keys is :1
List of Keys is : [b'Message']
GET Message returned : Hello!, The cache is working with Python!
CLIENT LIST returned : 
id : 5596, addr : 106.180.8.21:54638
id : 5531, addr : 13.71.156.31:6336
RPush 1
RPush 3
LPush 4
LPush 6
LPop b'Suzuki'
RPop b'John'
List of Keys is : [b'name', b'Message']
GET name returned :  [b'Tetuo', b'Taro', b'Tom', b'Alex']
Delete 1
List of Keys is : [b'Message']

以上になります、最後までお読みいただきありがとうございました。

参考サイト

https://docs.microsoft.com/ja-jp/azure/azure-cache-for-redis/cache-python-get-started

https://www.python.ambitious-engineer.com/archives/1189

https://www.denzow.me/entry/2017/10/07/233233

https://symfoware.blog.fc2.com/blog-entry-1442.html

https://qiita.com/wind-up-bird/items/f2d41d08e86789322c71

https://qiita.com/1ntegrale9/items/5115eaee1ee2f10bbf06

Discussion