Laravel 8写入Redis缓存后phpRedisAdmin无法查看数据的问题排查
问题描述
在本地Ubuntu 20.04服务器运行Laravel 8应用时遇到Redis配置问题:
- 项目
composer.json中未包含predis库 - 执行以下缓存操作代码后无报错,日志中能读取到有效缓存数据,但提前清空的phpRedisAdmin中无任何缓存记录,导致后续业务逻辑因无法读取Redis缓存而失败
缓存操作代码:
try { Cache::set('custom_Key', ['key1'=> 'value1', 'key2'=> 'value2']); Cache::tags('tagKeyName')->forever('key', $arrayData); } catch (Throwable $exception) { Log::error($exception); } $cacheValue = Cache::tags('tagKeyName')->get('key'); \Log::info(' -1 $cacheValue::'); \Log::info($cacheValue);
当前.env配置:
BROADCAST_DRIVER=log CACHE_DRIVER=redis FILESYSTEM_DISK=local QUEUE_CONNECTION=redis SESSION_DRIVER=file SESSION_LIFETIME=1200 MEMCACHED_HOST=127.0.0.1 REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
解决步骤
1. 修复Redis客户端依赖缺失问题
Laravel 8默认依赖phpredis扩展作为Redis客户端,若未安装该扩展且未引入predis库,Laravel会自动 fallback 到内存级的array缓存(仅当前请求有效,不会写入Redis服务),这就是日志能读到数据但phpRedisAdmin为空的核心原因。
方案一:安装phpredis扩展
执行以下命令安装并重启PHP服务(根据你的PHP版本调整命令):
sudo apt update sudo apt install php-redis sudo systemctl restart php7.4-fpm
方案二:引入predis库
执行composer命令安装依赖:
composer require predis/predis
然后修改config/database.php中的Redis客户端配置:
'redis' => [ 'client' => env('REDIS_CLIENT', 'predis'), // 保留其他原有配置 ],
2. 修正.env配置错误
- 将
REDIS_PASSWORD=null改为REDIS_PASSWORD=(空值),Redis默认无密码时无需设置null,该值会导致连接异常 - 确认
CACHE_DRIVER=redis和QUEUE_CONNECTION=redis配置未被修改
3. 清除Laravel配置缓存
.env修改后需清除配置缓存,避免旧配置生效:
php artisan config:clear
4. 验证Redis连接与写入
添加测试路由验证Redis是否正常写入:
// routes/web.php Route::get('/test-redis', function() { Redis::set('test_key', 'test_value_from_laravel'); $value = Redis::get('test_key'); dd('Redis测试值:'.$value); });
访问该路由,若输出Redis测试值:test_value_from_laravel,同时在phpRedisAdmin中能看到test_key,则配置正常。
5. 检查Redis服务状态
确保本地Redis服务正在运行:
sudo systemctl status redis-server
若未运行,执行sudo systemctl start redis-server启动服务。
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

