ブログにRedisを導入してみた

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化してもいいかもしれませんね。

コメントを投稿

コメント