Redis 异常情况

阐述一下我的问题
现在我在一个控制器里调用Redis出现了奇怪的现象,在login方法里调用redis例如get\set方法都是没问题的,在redis-cli终端里也能看见键和值。
但是我在logout里却看不到任何值,仿佛我调用了一个其他的redis服务,但是我用ps -aux| grep ‘redis’的时候却只看到一个,然后我干掉了这个pid,这个时候login方法访问不了了,报错,显示连接不上server服务。
但是这个logout方法通过中间件调用redis却能访问正常,感觉像见鬼了一样。

我的路由是这样的

Route::group(['middleware'=>'checktoken'],function (){
    Route::post('/logout','\App\Http\Controllers\Api\DriversController@logout');
});

Route::post('/login','\App\Http\Controllers\Api\DriversController@login');

我的中间件

/**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $token = $request->header('token');
        $uid = $request->header('uid');

        $cache = Redis::get('D:U:'.$uid);
        if(!$cache){
            return \response('请重新登陆',301);
        }
        if($token != $cache){
            return \response('请重新登陆',301);
        }
        JWT::$leeway = 60;
        $alg =
            [
                "typ" => "JWT", //声明类型为jwt
                "alg" => "HS256" //声明签名算法为SHA256
            ];
        $key = 'FrNc-TAbK29_HwbQK_tM';
        try{
            JWT::decode($token,$key,$alg);
        }
        catch (\Exception $e) {
            return response()->json('token无效:' . $e);
        }

        return $next($request);
    }

我的控制器

/**
     * 登陆
     * @param Request $request
     * @return array|\Illuminate\Http\JsonResponse
     */
    public function login(Request $request){
        $post = $request->post();
        //验证
        $rules = [
            'phone' => 'required|regex:/^1[34578]\d{9}$/',
            'password' => 'required|min:8',
        ];
        $messages = [
            'phone.required' => '手机号不能为空',
            'phone.phone' => '手机号无效',
            'password.required' => '密码不能为空',
            'password.min' => '密码长度不能少于8个字符',
        ];
        $validator = Validator::make($post, $rules, $messages);
        if ($validator->fails()) {
            return response()->json(['code' => 0, 'msg' => '数据校验失败', 'data' => $validator->errors()->all()]);
        }
        $driver = Driver::with(['groups','companies'])->where('phone',$post['phone'])->first()->toArray();
        if(empty($driver)){
            return response()->json(['code' => 0, 'msg' => '手机号码或密码错误', 'data' => []]);
        }
        if(!Hash::check($post['password'],$driver['password'])){
            return response()->json(['code' => 0, 'msg' => '手机号码或密码错误', 'data' => []]);
        }
        $driver['company_name'] = $driver['companies']['name'];
        $driver['group_name'] = $driver['groups']['name'];
        unset($driver['password']);
        unset($driver['companies']);
        unset($driver['groups']);
        if(!$token = Redis::get('D:U:'.$driver['id'])){
            if(!$token = $this->getJWTToken($driver)){
                return response()->json(['code'=>0,'msg'=>'未知错误']);
            }
            Redis::set('D:U:'.$driver['id'], $token);
            Redis::expire('D:U:'.$driver['id'],72000);
        }

        $result = [
            'userInfo' => $driver,
            'token' => $token
        ];
        return response()->json(['code'=>1, 'msg'=>'登陆成功','data'=>$result]);
    }

    public function logout(Request $request){
        $uid = $request->header('uid');
        Redis::del('D:U:'.$uid);
        return response()->json(['code'=>1, 'msg'=>'登出成功', 'data'=>[]]);
    }

    private function getJWTToken($value)
    {
        $time = time();
        $payload = [
            'iat' => $time,
            'nbf' => $time,
            'exp' => $time + 7200,
            'data' => [
                'userInfo' => $value['id']
            ]
        ];
        $key = 'FrNc-TAbK29_HwbQK_tM';
        $alg = 'HS256';
        $token = JWT::encode($payload, $key, $alg);
        return $token;

    }

请各路大神帮帮忙,看一下这是什么问题,谢谢各位!

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
调调

你确定你的key是一样的吗

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!