6/3/25, 4:15 PM redis · PyPI
2025 Python Packaging Survey is now live! Take the survey now
Search projects
Help Sponsors Log in Register
redis 6.2.0 Latest version
pip install redis Released: May 28, 2025
Python client for Redis database and key-value store
Navigation Project description
Project
redis-py
description
Release The Python interface to the Redis key-value store.
history
CI no status docs passing license MIT
latest-prerelease v6.1.1 codecov 94%
Download
files Installation | Usage | Advanced Topics | Contributing
Verified details Note: redis-py 5.0 will be the last version of redis-py
These details have been
verified by PyPI
to support Python 3.7, as it has reached end of life.
redis-py 5.1 will support Python 3.8+. Note: redis-
Maintainers
py 6.1.0 will be the last version of redis-py to
cisk support Python 3.8, as it has reached end of life.
redis-py 6.2.0 will support Python 3.9+.
https://pypi.org/project/redis/ 1/8
6/3/25, 4:15 PM redis · PyPI
RedisLabs How do I Redis?
2025 Python Packaging Survey is now live! Take the survey now
Learn for free at Redis University
Unverified details Try the Redis Cloud
These details have not been
verified by PyPI Dive in developer tutorials
Project links Join the Redis community
Changes Work at Redis
Code
Installation
Documentation
Start a redis via docker (for Redis versions >= 8.0):
Homepage
Issue tracker
docker run -p 6379:6379 -it redis:latest
Meta
License Start a redis via docker (for Redis versions < 8.0):
Expression: MIT
SPDX License
Expression docker run -p 6379:6379 -it redis/redis-stack:latest
Author: Redis
Inc. To install redis-py, simply:
Redis,
``` bash
database, key-
$ pip install redis
value-store
Requires: Python
>=3.9 For faster performance, install redis with hiredis support, this
Provides-Extra: provides a compiled response parser, and for most cases requires
hiredis , jwt , zero code changes. By default, if hiredis >= 1.0 is available, redis-py
ocsp will attempt to use it for response parsing.
Classifiers $ pip install "redis[hiredis]"
Development Status
5- Looking for a high-level library to handle object mapping? See redis-
Production/Stable
om-python!
Environment
Console Supported Redis Versions
Intended Audience
Developers
https://pypi.org/project/redis/ 2/8
6/3/25, 4:15 PM redis · PyPI
License The most recent version of this library supports Redis version 7.2, 7.4
2025
OSI Approved ::
Python Packaging
and 8.0. Survey is now live! Take the survey now
MIT License
The table below highlights version compatibility of the most-recent
Operating System library versions and redis versions.
OS Independent
Programming
Library version Supported redis versions
Language
Python
3.5.3 <= 6.2 Family of releases
Python :: 3
Python :: 3 :: Only
>= 4.5.0 Version 5.0 to 7.0
Python :: 3.9
Python :: 3.10
>= 5.0.0 Version 5.0 to 7.4
Python :: 3.11
Python :: 3.12
Python :: 3.13 >= 6.0.0 Version 7.2 to current
Python ::
Implementation ::
CPython Usage
Python ::
Implementation :: Basic Example
PyPy
>>> import redis
>>> r = redis.Redis(host='localhost', port=6379, db=0)
>>> r.set('foo', 'bar')
True
Google is a
Visionary sponsor >>> r.get('foo')
of the Python b'bar'
Software
Foundation.
PSF Sponsor · Served The above code connects to localhost on port 6379, sets a value in
ethically Redis, and retrieves it. All responses are returned as bytes in Python,
to receive decoded strings, set decode_responses=True. For this, and
more connection options, see these examples.
Report project as
malware RESP3 Support
To enable support for RESP3, ensure you have at least version 5.0 of
the client, and change your connection object to include protocol=3
>>> import redis
https://pypi.org/project/redis/ 3/8
6/3/25, 4:15 PM redis · PyPI
>>> r = redis.Redis(host='localhost', port=6379, db=0,
2025 Python Packaging Survey is now live! Take the survey now
Connection Pools
By default, redis-py uses a connection pool to manage connections.
Each instance of a Redis class receives its own connection pool. You
can however define your own redis.ConnectionPool.
>>> pool = redis.ConnectionPool(host='localhost', port=
>>> r = redis.Redis(connection_pool=pool)
Alternatively, you might want to look at Async connections, or Cluster
connections, or even Async Cluster connections.
Redis Commands
There is built-in support for all of the out-of-the-box Redis
commands. They are exposed using the raw Redis command names
( HSET , HGETALL , etc.) except where a word (i.e. del) is reserved by
the language. The complete set of commands can be found here, or
the documentation.
Advanced Topics
The official Redis command documentation does a great job of
explaining each command in detail. redis-py attempts to adhere to
the official command syntax. There are a few exceptions:
MULTI/EXEC: These are implemented as part of the Pipeline
class. The pipeline is wrapped with the MULTI and EXEC
statements by default when it is executed, which can be disabled
by specifying transaction=False. See more about Pipelines
below.
SUBSCRIBE/LISTEN: Similar to pipelines, PubSub is
implemented as a separate class as it places the underlying
connection in a state where it can't execute non-pubsub
commands. Calling the pubsub method from the Redis client will
return a PubSub instance where you can subscribe to channels
https://pypi.org/project/redis/ 4/8
6/3/25, 4:15 PM redis · PyPI
and listen for messages. You can only call PUBLISH from the
2025 Python Packaging Survey
Redis client is now
(see this live! onTake
comment the #151
issue surveyfor
nowdetails).
For more details, please see the documentation on advanced topics
page.
Pipelines
The following is a basic example of a Redis pipeline, a method to
optimize round-trip calls, by batching Redis commands, and
receiving their results as a list.
>>> pipe = r.pipeline()
>>> pipe.set('foo', 5)
>>> pipe.set('bar', 18.5)
>>> pipe.set('blee', "hello world!")
>>> pipe.execute()
[True, True, True]
PubSub
The following example shows how to utilize Redis Pub/Sub to
subscribe to specific channels.
>>> r = redis.Redis(...)
>>> p = r.pubsub()
>>> p.subscribe('my-first-channel', 'my-second-channel
>>> p.get_message()
{'pattern': None, 'type': 'subscribe', 'channel': b'my-
Redis’ search and query capabilities default dialect
Release 6.0.0 introduces a client-side default dialect for Redis’ search
and query capabilities. By default, the client now overrides the
server-side dialect with version 2, automatically appending DIALECT 2
to commands like FT.AGGREGATE and FT.SEARCH.
Important: Be aware that the query dialect may impact the results
returned. If needed, you can revert to a different dialect version by
configuring the client accordingly.
https://pypi.org/project/redis/ 5/8
6/3/25, 4:15 PM redis · PyPI
2025 Python Packaging
>>> from Survey is now live! Take the survey
redis.commands.search.field import
now TextField
>>> from redis.commands.search.query import Query
>>> from redis.commands.search.index_definition import
>>> import redis
>>> r = redis.Redis(host='localhost', port=6379, db=0)
>>> r.ft().create_index(
>>> (TextField("name"), TextField("lastname")),
>>> definition=IndexDefinition(prefix=["test:"]),
>>> )
>>> r.hset("test:1", "name", "James")
>>> r.hset("test:1", "lastname", "Brown")
>>> # Query with default DIALECT 2
>>> query = "@name: James Brown"
>>> q = Query(query)
>>> res = r.ft().search(q)
>>> # Query with explicit DIALECT 1
>>> query = "@name: James Brown"
>>> q = Query(query).dialect(1)
>>> res = r.ft().search(q)
You can find further details in the query dialect documentation.
Author
redis-py is developed and maintained by Redis Inc. It can be found
here, or downloaded from pypi.
Special thanks to:
Andy McCurdy (
[email protected] ) the original author of
redis-py.
Ludovico Magnocavallo, author of the original Python Redis
client, from which some of the socket code is still used.
Alexander Solovyov for ideas on the generic response callback
system.
Paul Hubbard for initial packaging support.
Redis
https://pypi.org/project/redis/ 6/8
6/3/25, 4:15 PM redis · PyPI
2025 Python Packaging Survey is now live! Take the survey now
Help About PyPI
Installing packages PyPI Blog
Uploading packages Infrastructure dashboard
User guide Statistics
Project name retention Logos & trademarks
FAQs Our sponsors
Contributing to PyPI Using PyPI
Bugs and feedback Terms of Service
Contribute on GitHub Report security issue
Translate PyPI Code of conduct
Sponsor PyPI Privacy Notice
Development credits Acceptable Use Policy
Status: All Systems Operational
Developed and maintained by the Python community, for the Python community.
Donate today!
"PyPI", "Python Package Index", and the blocks logos are registered trademarks of the Python
Software Foundation .
© 2025 Python Software Foundation
Site map
Switch to desktop version
English español français 日本語 português (Brasil) українська Ελληνικά Deutsch 中文 (简体)
中文 (繁體) русский עבריתEsperanto 한국어
https://pypi.org/project/redis/ 7/8
6/3/25, 4:15 PM redis · PyPI
2025 Python Packaging Survey is now live! Take the survey now
AWS Pingdom
Cloud computing
Datadog Fastly Google
and Security
Sponsor Monitoring CDN Download Analytics Monitoring
Sentry StatusPage
Error logging Status page
https://pypi.org/project/redis/ 8/8