• Stars
    star
    435
  • Rank 99,433 (Top 2 %)
  • Language
    Python
  • License
    Other
  • Created about 11 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Flask extension for using Redis

flask-redis

CircleCI codecov Codacy Badge GitHub tag (latest SemVer)

PyPI - Python Version Flask version support is 0.9+ redis-py version support is 2.6+ Code style: black

A nice way to use Redis in your Flask app.

Configuration

Start by installing the extension with pip install flask-redis. Once that's done, configure it within your Flask config. Set the URL of your Redis instance like this:

REDIS_URL = "redis://:password@localhost:6379/0"

If you wanna connect to a Unix socket, you can specify it like "unix://:password@/path/to/socket.sock?db=0".

Usage

Setup

To add a Redis client to your application:

from flask import Flask
from flask_redis import FlaskRedis

app = Flask(__name__)
redis_client = FlaskRedis(app)

or if you prefer, you can do it the other way around:

redis_client = FlaskRedis()
def create_app():
    app = Flask(__name__)
    redis_client.init_app(app)
    return app

The FlaskRedis client here will pass its keyword arguments to the Redis class from the redis-py library, so all parameters from the Redis documentation page will work here as well β€” such as socket_timeout and encoding.

Accessing Redis

Access is done by using FlaskRedis as if it was a Redis class as well:

from my_app import redis_client

@app.route('/')
def index():
    return redis_client.get('potato')

For detailed instructions on what methods you can use on the client, as well as how you can use advanced features such as Lua scripting, pipelines, and callbacks, please check the redis-py documentation.

Pro-tip: The redis-py package uses the redis namespace, so it's nicer to name your Redis object something like redis_client instead of just redis.

Extra features in flask-redis

Custom providers

Instead of the default Redis client from redis-py, you can provide your own. This can be useful to replace it with mockredis for testing:

from flask import Flask
from flask_redis import FlaskRedis
from mockredis import MockRedis


def create_app():
    app = Flask(__name__)
    if app.testing:
        redis_store = FlaskRedis.from_custom_provider(MockRedis)
    else:
        redis_store = FlaskRedis()
    redis_store.init_app(app)
    return app

Contributing

  1. Check for open issues or open a fresh issue to start a discussion
  2. Fork the repository on GitHub.
  3. Send a pull request with your code!

Merging will require a test which shows that the bug was fixed, or that the feature works as expected. Feel free to open a draft pull request though without such a test and ask for help with writing it if you're not sure how to.

As Bence (the only maintainer) works full-time, please allow some time before your issue or pull request is handled.

More Repositories

1

aiohttp-sentry

An aiohttp server middleware for reporting failed requests to Sentry
Python
35
star
2

structlog-pretty

A collection of structlog processors for prettier output: a code syntax highlighter, JSON and XML prettifiers, a multiline string printer, and a numeric value rounder.
Python
34
star
3

visawhen

Data on US visa wait times at the National Visa Center and at US consulates.
TypeScript
32
star
4

conference-notes

Notes I've scribbled down at tech conferences
18
star
5

url

A dead-simple Docker image to run dead-simple scripts without their own image.
Dockerfile
6
star
6

rlclient

A client to communicate with the Rocket League game coordinator servers.
Python
4
star
7

dotfiles

a collection of dotfiles, as may be obvious
Vim Script
4
star
8

hiss

A Mumble client library for Python 3.5
Protocol Buffer
3
star
9

zenbot

The Zen of Python in Slack
Python
2
star
10

stars

2
star
11

aiohttp-datadog

An aiohttp middleware for reporting metrics to Datadog
Python
2
star
12

hexpuzzle

'Solving a Math Puzzle When You're Bad at Math' presentation and script
JavaScript
2
star
13

bkkcsirip

A script that posts updates from bkkinfo.hu to Twitter.
Python
2
star
14

nvc-backlog

This project moved to https://github.com/underyx/visawhen
Python
2
star
15

mici.hu

mici
HTML
2
star
16

TheMajorNews

A Twitter bot that takes randomly generated headlines from @TwoHeadlines, repeatedly translates them to and from Korean until the sentence becomes absolutely garbled, and then posts it to its own account, @TheMajorNews.
Python
2
star
17

dirty

GGJ 2015 project
JavaScript
1
star
18

bence.dev

The thingies behind underyx.me
Astro
1
star
19

under.ee

HTML
1
star
20

aiohttp-limit

An aiohttp middleware for limiting connections
Python
1
star
21

the-gathering

Go
1
star