php-redis跨页面无法使用?有遇到相同问题的朋友吗
redis版本:6.2 ; php-redis:6.0.0-dev
在登录控制器写入了数据,在其他控制器就无法读取,在一个方法内写了数据然后再读取就可以读取出来,这种情况该怎么解决呀。这个是我部署到线上出的问题,我本地是没问题的。
补充:
我进一步调试的时候发现了原因,我在中间件之前获取token的路由的控制器里面设置的redis缓存,然后接着从redis读取,这时候是可以读取的,但是我在cli里面查看是没有这个key的。
我又在另一个业务接口中进行相同的操作,这时候在cli中就能看到那个key了。
Route::any('/token', [\App\Http\Controllers\UserController::class, 'token']);//这里写入redis,cli中无写入数据
Route::middleware(\App\Http\Middleware\RefreshToken::class)->group(function (){
Route::any('/food/all', [\App\Http\Controllers\FoodController::class, 'all']);//这里写入redis,cli中有数据
Route::any('/food/record', [\App\Http\Controllers\FoodController::class, 'record']);
Route::any('/food/recordlist', [\App\Http\Controllers\FoodController::class, 'record_list']);
});
会不会是用了不同的database
也可能是配置了不同的key前缀
ttl 过期?
我们像个最简单的看下 有没有可能是不是一个redis?
这种情况 得先确定基础配置项是否一致
你应该是用了两个不同的Redis配置 PECL扩展安装的redis和 composer安装的predis注意要区分下 直接 new \Redis() 是调用了你的 redis 扩展 Redis 类; 而use Illuminate\Support\Facades\Redis 是纯php写的composer包。这两个是不一样的