Kir*_*aLT 10 python database redis flask
我正在使用Redis数据库创建烧瓶应用程序.我有一个连接问题
我可以将Redis连接全局并保持非关闭状态:
init .py
import os
from flask import Flask
import redis
app = Flask(__name__)
db = redis.StrictRedis(host='localhost', port=6379, db=0)
Run Code Online (Sandbox Code Playgroud)
我也可以重新连接每个请求(Flask doc http://flask.pocoo.org/docs/tutorial/dbcon/):
init .py
import os
from flask import Flask
import redis
app = Flask(__name__)
#code...
@app.before_request
def before_request():
g.db = connect_db()
@app.teardown_request
def teardown_request(exception):
db = getattr(g, 'db', None)
if db is not None:
db.close()
Run Code Online (Sandbox Code Playgroud)
哪种方法更好?为什么我应该使用它?
谢谢您的帮助!
wil*_*art 20
默认情况下,redis-py使用连接池.在GitHub的维基说:
在幕后,redis-py使用连接池来管理与Redis服务器的连接.默认情况下,您创建的每个Redis实例将依次创建自己的连接池.
这意味着对于大多数应用程序而言,假设您的redis服务器与烧瓶应用程序位于同一台计算机上,那么为每个请求"打开连接"不太可能导致任何性能问题.Redis Py的创建者提出了这种方法:
一个.创建一个全局redis客户端实例并让您的代码使用它.
湾 创建一个全局连接池,并将其传递给整个代码中的各种redis实例.
此外,如果您在任何时候都有大量指令要执行,那么可能值得查看流水线操作,因为这会减少每条指令所需的来回时间.