2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS EC2にFlask-Cachingを使ってRedisでビューキャッシュをしてみた

Posted at

#はじめに
機械学習やら色々な新しい事を実践的に試すべく
エロサイトを開発中。あなろぼ
開発実践用にオープンしているので広告は入っておりませんのでお気軽にどうぞ。
色々工夫したアプリケーションの作りになっているのでレスポンスは速いはず。

#アプリケーション構成
このサイトの構成は下記になっています。
Nginx
Uwsgi
Flask(Python)
MongoDB

#今回トライしたこと
1.Redisの導入
2.Flaskのビューをキャッシュ

#1.Amazon Linux2にRedisをインストール

sudo amazon-linux-extras install redis4.0
sudo systemctl enable redis.service
sudo systemctl start redis.service

今回は動作すればOKなのでこれだけでおk
細かい設定は他を参照
この辺りを参照しました。
http://www.denet.ad.jp/technology/2017/11/redis-centos7.html

#2.Flaskのビューをキャッシュ

必要なパッケージのインストール。

sudo pip install Flask-Caching
sudo pip install redis
from flask import Flask
from flask_caching import Cache

app = Flask(__name__)

# Cacheインスタンスの作成
cache = Cache(app, config={
    'CACHE_TYPE': 'redis',
    'CACHE_DEFAULT_TIMEOUT': 60,
    'CACHE_REDIS_HOST': 'localhost',
    'CACHE_REDIS_PORT': 6379,
})

@app.route('/')
@cache.cached()

・flask_cachingを呼び出し
・Cacheインスタンスの作成
・アプリケーションのルートの下に「@cache.cached()」を記述するだけ

これだけで自動的にビューをredisにキャッシュしてくれます。

キャッシュにパラメータを指定できます。
timeout: キャッシュの有効期間 (秒) デフォルトはインスタンス作成時のもの
key_prefix: キーのプリフィックスで、デフォルトでは"view/リクエストパス"
query_string: Trueの場合、クエリパラメータが異なるリクエストはクエリパラメータを含むハッシュ値をキーとしてキャッシュされます (デフォルトはFalseで、クエリパラメータが異なっても同一のキーが使われる)リストとかクエリでビューを変更している場合はこちらをTrueにしましょう

うん、めちゃくちゃ速くなった(気がする?)

見てみてくださいな
あなろぼ

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?