Learn how to implement Redis Pub/Sub in PHP for real-time messaging. Use PHPRedis or Predis to publish and subscribe to Redis channels for instant communication.
Introduction
Redis Pub/Sub (Publish/Subscribe) is a messaging system that allows real-time communication between different parts of an application. It is used for:
- Chat applications
- Live notifications
- Event-driven architectures
- Inter-service communication
Redis Pub/Sub enables one part of an application to publish messages to a channel while others subscribe to receive those messages in real-time.
This guide covers:
- How Redis Pub/Sub works
- Using PHPRedis and Predis for message handling
- Implementing real-time notifications in PHP
1. How Redis Pub/Sub Works
Redis uses a publish/subscribe pattern where:
- Publishers send messages to a channel.
- Subscribers listen for messages on that channel.
When a message is published, all subscribers receive it instantly.
2. Setting Up Redis for Pub/Sub in PHP
Before implementing Redis Pub/Sub, ensure Redis is installed and running.
Verify Redis is active:
redis-cli ping
3. Implementing Redis Pub/Sub with PHPRedis
Installing PHPRedis
sudo apt install php-redis # Ubuntu/Debian
brew install php-redis # macOS
Enable it in php.ini
:
extension=redis
Restart the web server:
sudo systemctl restart apache2 # For Apache
sudo systemctl restart php-fpm # For PHP-FPM
Publishing Messages with PHPRedis
A publisher sends messages to a Redis channel.
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$channel = "notifications";
$message = "New user registered!";
$redis->publish($channel, $message);
echo "Message published to channel: $channel";
- Publishes "New user registered!" to the
notifications
channel. - All subscribers listening to this channel receive the message.
Subscribing to Messages with PHPRedis
A subscriber listens for messages on a channel.
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->subscribe(["notifications"], function ($redis, $channel, $message) {
echo "Received on $channel: $message\n";
});
- Listens for messages on "notifications".
- Executes a callback when a message is received.
Output (When a Message is Received)
Received on notifications: New user registered!
4. Implementing Redis Pub/Sub with Predis
If using Predis (pure PHP) instead of PHPRedis, install it via Composer:
composer require predis/predis
Publishing Messages with Predis
require 'vendor/autoload.php';
$redis = new Predis\Client();
$channel = "notifications";
$message = "A new order has been placed!";
$redis->publish($channel, $message);
echo "Message published to channel: $channel";
Subscribing to Messages with Predis
require 'vendor/autoload.php';
$redis = new Predis\Client();
$redis->subscribe(["notifications"], function ($message, $channel) {
echo "Received on $channel: $message\n";
});
- Works the same way as PHPRedis but without requiring a PHP extension.
5. Use Cases for Redis Pub/Sub in PHP
✅ Chat applications – Users send and receive messages in real-time.
✅ Live notifications – Alerts for new orders, messages, or status changes.
✅ Microservices communication – Services exchange data without direct interaction.
✅ Real-time analytics – Updates dashboards instantly with new data.
6. Best Practices for Using Redis Pub/Sub in PHP
✅ Use persistent connections for better efficiency.
✅ Use message queues (like Redis Streams) for reliability if messages must be stored.
✅ Avoid blocking long-running subscribers—use asynchronous execution where possible.
✅ Monitor Redis performance using redis-cli INFO
.
Conclusion
Redis Pub/Sub is a fast and lightweight messaging system that enables real-time communication in PHP applications.
This guide covered:
- How Redis Pub/Sub works
- Implementing Redis Pub/Sub using PHPRedis and Predis
- Publishing and subscribing to messages in PHP
- Best practices for Redis messaging
By using Redis Pub/Sub, you can build scalable real-time features in PHP with minimal overhead.