Flask 紀錄 01 - 使用 Flask-Caching 和 Redis 實現快速緩存的方法

Flask 上下文導致 redis 引入一直有問題, 所以改用 Flask-Caching, 但是 ...

簡介

主要在 Flask 連接 redis 一直發生問題,所以使用 Flask-Caching 來處理讀寫 redis.

但是還是有一點問題,就是 Flask-Caching 官方沒有支援讀取 redis 的用法,但是在網路上有看到一則留言。

成功所以紀錄一下。

程式碼在此 Github - CHunYenc/get-crypto-price-backend(dev/flask-no-celery)

Flask-Cacing 文檔 Flask-Caching docs

安裝 Flask-Caching

1
pip install Flask-Caching

Init Flask-Caching

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from flask_caching import Cache

cache = Cache(config={"CACHE_TYPE": "RedisCache"})

def create_app(env):
    ...
    app = Flask(__name__)
    app.config.from_object(config[env])
    ...

    with app.app_context():
        ...
        # Caching
        cache.init_app(app)
        ...

讀 redis 特殊方式

1
2
3
4
k_prefix = cache.cache.key_prefix
keys = cache.cache._write_client.keys(k_prefix + "*")
keys = [k.decode("utf8") for k in keys]
keys = [k.replace(k_prefix, "") for k in keys]

k_prefix 是 Flask-Caching 會自動加入 flask-cache 在 redis 上面,所以需要把 k_prefix 去除。

程式碼參考位置 /backend/app/socket.py

Copyright © CHUN-YEN, CHEN
使用 Hugo 建立
主題 StackJimmy 設計