Created 2020年6月13日0:56
Updated 2020年6月13日0:58
Categories
Django
Python
Docker
自宅サーバー
日記
当ブログはMarkdownで記事を保存し、閲覧する際にHTMLに変換するという手段を取っています。
しかし、毎回閲覧するたびにHTMLに変換するのはかなり処理に時間がかかるため、変換後のHTMLをRedisに入れてみました。
以下のコードをDjangoのviewから使うだけです。めちゃくちゃ簡単でしたw
redis_client = redis.Redis(host=settings.REDIS_SERVER, port=settings.REDIS_PORT, db=0)
def get_html(cache_key, source):
# Redisからキャッシュを取得
try:
cache = redis_client.get(cache_key)
if cache is not None:
html = cache.decode()
else:
html = convert_markdown(source)
# 1時間でexpire
redis_client.set(cache_key, html, ex=3600)
except redis.exceptions.ConnectionError:
html = convert_markdown(source)
return html
使ってみた感じステートレスなのもすごくいいです。
redis_clientを作る際にはサーバーが死んでてもエラーにならず、実際に使う際に接続に失敗して初めてエラーが出ます。
また、コンテナとの相性も良く、(幣ブログの場合)Redisには一時的なデータしか置かないため永続化が必要ありませんでした。
サクッと導入できたため、他の部分もRedis化してもいいかもしれませんね。