yiisoft/yii2-redis
Yii2 Redis extension providing Redis connection plus Cache, Session, and Mutex handlers, and an ActiveRecord layer to store and query structured data in Redis using familiar Yii2 patterns. Requires Redis 2.6.12+ and PHP 7.4+ (best on PHP 8).
Cache, Session, ActiveRecord).Illuminate\Cache\RedisStore but with Yii2’s Cache interface.RedisSessionHandler with Yii2’s Session component.Component base class is incompatible with Laravel’s ServiceProvider/Manager patterns.Cache and Session interfaces differ from Yii2’s.predis/predis) and drop Yii2-specific components.yiisoft/yii2-redis (e.g., wrap Cache/Session in Laravel’s CacheManager/SessionManager).Redis driver for cache:redis and session:driver=redis).| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Framework Mismatch | High | Isolate Redis logic in a micro-service or shared library. |
| ActiveRecord Limits | High | Avoid if needing SQL-like queries; use Laravel’s Eloquent or a hybrid approach. |
| Predis Dependency | Medium | Ensure Predis (~1.1) is compatible with Laravel’s PHP version (8.0+). |
| Session Handling | Low | Laravel’s RedisSessionHandler is mature; redundant unless needing Yii2’s session features. |
| Mutex Complexity | Medium | Use Laravel’s Illuminate\Support\Facades\Lock or a custom Predis-based solution. |
Why Redis?
Laravel Integration Depth
Team Expertise
yiisoft/yii2-redis adds little value beyond abstraction.Scaling Requirements
Maintenance Tradeoffs
| Laravel Component | Yii2-Redis Equivalent | Integration Strategy |
|---|---|---|
Illuminate\Cache |
yii\redis\Cache |
Option A: Use Predis directly in Laravel. Option B: Build a CacheStore adapter. |
Illuminate\Session |
yii\redis\Session |
Option A: Stick with RedisSessionHandler. Option B: Wrap Yii2’s Session in Laravel’s SessionManager. |
| Eloquent ORM | yii\redis\ActiveRecord |
Not recommended: Use Laravel’s Eloquent or a hybrid (SQL + Redis cache). |
| Queue Workers | N/A | Use Laravel’s Redis queue driver (redis:queue). |
| Broadcasting (Laravel) | N/A | Use Laravel’s Redis channels or Predis directly. |
Assessment Phase (2 weeks)
Pilot Integration (3 weeks)
CacheStore adapter for yiisoft/yii2-redis:
// app/Providers/AppServiceProvider.php
use yii\redis\Cache as YiiRedisCache;
use Illuminate\Cache\CacheManager;
public function register()
{
CacheManager::extend('yii_redis', function ($app) {
return new YiiRedisCache($app['redis']);
});
}
config/cache.php:
'stores' => [
'yii_redis' => [
'driver' => 'yii_redis',
'redis' => [
'class' => 'yii\redis\predis\PredisConnection',
'parameters' => 'tcp://redis:6379',
],
],
],
SessionManager to use yii\redis\Session:
Session::extend('yii_redis', function ($app) {
return new yii\redis\Session([
'redis' => $app['redis'],
]);
});
spatie/laravel-redis-query.Full Rollout (4 weeks)
config/cache.php and config/session.php with Yii2-Redis configurations.yii_redis driver.Cache::remember() → Cache::store('yii_redis')->remember()).predis/predis compatibility).redis service must be configured to return a yii\redis\ConnectionInterface (or wrapped Predis client).$this->app->bind('redis', function () {
return new yii\redis\predis\PredisConnection([
'parameters' => 'tcp://redis:6379',
]);
});
Phase 1: Caching
file/database cache with yii_redis.Phase 2: Sessions
yii_redis.Phase 3: Advanced Features (Optional)
Phase 4: Rollback Plan
file cache if Redis fails).components array.How can I help you explore Laravel packages today?