channels-redis
Redis-backed ASGI channel layer implementation
What it is and what it does
channels_redis bridges Django Channels (an ASGI framework for async communication) with Redis, providing a persistent, distributed channel layer for real-time applications. It offers two implementations: RedisChannelLayer, which handles channels and groups directly, and RedisPubSubChannelLayer, which uses Redis Pub/Sub for message dispatch (currently in Beta). Both support single-server and sharded configurations, allowing you to scale WebSocket, HTTP streaming, and other real-time features across multiple application servers.
The package integrates into Django's CHANNEL_LAYERS setting and handles message routing, group membership, and capacity management. It supports SSL/TLS connections, Redis Sentinel for high availability, UNIX domain sockets, optional symmetric encryption, and configurable message expiry and per-channel capacity limits. The package is tested against Python 3.9 through 3.13 and maintains compatibility with current and legacy redis-py versions.
Use it for:
- Scale WebSocket connections across multiple Django application servers using a shared Redis channel layer.
- Implement real-time group messaging (e.g., chat rooms, notifications) where consumers need to broadcast to many connected clients.
- Build high-availability ASGI deployments with Redis Sentinel for automatic failover and connection resilience.
- Add optional message encryption for sensitive real-time data transmitted through the channel layer.
- Configure per-channel capacity and message expiry to manage backpressure and memory usage in peaky traffic scenarios.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides Redis-backed channel layers for Django Channels, enabling asynchronous message dispatch and group communication in ASGI applications through either traditional channel handling or Redis Pub/Sub.
Yes. channels_redis is actively maintained, has no known vulnerabilities, and is the standard Redis integration for Django Channels. Install it if you're building real-time features in Django and need to distribute channels across multiple servers—it's low-friction and well-tested. Use RedisPubSubChannelLayer only if you understand its Beta status and can tolerate potential breaking changes.
Install
channels-redis on PyPI
pip
pip install channels-redisuv
uv add channels-redispoetry
poetry add channels-redisInstalling channels-redis
Before you install
Low friction install with four runtime dependencies (redis, msgpack, asgiref, channels). Package is actively maintained with recent commits and no known vulnerabilities. Requires Python 3.9 or later.
License in practice
BSD permissive license allows commercial and private use with minimal restrictions—suitable for most projects.
Quickstart
pip install channels-redis
# In Django settings.py:
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [("localhost", 6379)],
},
},
}
Requires a running Redis server; Django Channels must already be installed and configured in your project.
Verify before relying
- Performance characteristics and throughput limits of each implementation (RedisChannelLayer vs. RedisPubSubChannelLayer) under load.
- Whether the Beta status of RedisPubSubChannelLayer implies active breaking changes or stable-with-caution maturity.
Package facts
| License | BSD (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — redis, msgpack, asgiref, channels |
| Maintenance | actively maintained — 388 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 4,922,010/month — #2,198 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: channels_redis-4.3.0-py3-none-any.whl
Tags
More Dynamic Content packages
MarkupSafe provides a text object that escapes…
permissive · top 100 on PyPI
Jinja2Jinja2 is a templating engine that renders…
permissive · top 100 on PyPI
soupsieveSoupsieve is a CSS selector library designed to…
permissive · top 100 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
FlaskFlask is a lightweight WSGI web application…
permissive · top 1,000 on PyPI
MakoMako compiles Python-embedded templates into…
permissive · top 1,000 on PyPI
channelsChannels augments Django with WebSocket,…
permissive · top 5,000 on PyPI
broadcasterBroadcaster provides a simple async broadcast…
permissive · top 15,000 on PyPI
daphneDaphne is an ASGI server that handles HTTP,…
permissive · top 5,000 on PyPI
potteryPottery provides Python dict, set, list, deque,…
unclear · top 15,000 on PyPI
redisPython client library for connecting to and…
permissive · top 1,000 on PyPI
django-redis-sessionsProvides a Redis-backed session storage backend…
permissive · top 15,000 on PyPI
taskiq-redisAdds Redis-based message brokers and result…
permissive · top 5,000 on PyPI
pyramid-session-redisProvides server-side session storage for…
permissive · top 15,000 on PyPI
asgirefProvides ASGI base libraries including…
permissive · top 1,000 on PyPI
py-redisA convenience wrapper around the official Redis…
permissive · top 15,000 on PyPI