php laravel redis缓存使用对比

PHP redis缓存的使用以及效果对比

作为一个正式工作PHP一年多时间的程序猿很遗憾在最近一段时间才正式的用上缓存这种东西,平常之前对缓存的概念总是模糊的,知道有这么种可以加快数据获取的途径但实际上仅仅只是了解,在没有接触大项目的工作经历上在小项目中往往总是SQL查询语句一条路走到黑的我今天在这分享出缓存使用的前后差距

环境情况:centos7,php,laravel,redis

redis缓存配置位于laravel项目目录/config/database.php中

'redis' => [
        'client' => 'predis',
        'default' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_DB', 0),
        ],

        'cache' => [
            'host' => env('REDIS_HOST', '127.0.0.1'),
            'password' => env('REDIS_PASSWORD', null),
            'port' => env('REDIS_PORT', 6379),
            'database' => env('REDIS_CACHE_DB', 1),
        ],
    ],

取数据逻辑部分代码

$classPlans = (Object)[];
$redis_data = $this->Redis->Get_Data($date);       
	if($redis_data['data']['valid']){
		$classPlans->data = $redis_data['data']['data'];
	}else{
		$mysql_data = $this->Mysql->Get_Data($date);
		$this->Redis->Store_Data($date, $mysql_data['data']);
		$classPlans->data = $mysql_data['data'];
	}
}

这段代码主要功能是获取某天的数据 $date参数为日期这里传入的地方我就不明说了,就是http请求get方法或者post方法都可以获得到的参数数据,主要流程是先向redis请求缓存数据如果没有再向mysql拿并且拿完后再将其存入redis中好下次获取


下面是redis仓库类中具体流程

public function Get_Data($date){
        $redis = Redis::connection('default');
        $user = DB::table('test.users')::where('id', 1)->first();
        if($user ){
            $data = $redis->get('user_'.$user->id);
            if(!empty($data)){
                return $this->success(['data' => json_decode($data), 'valid' => true]);
            }else{
                return $this->success(['data' => '', 'valid' => false]);
            }
        }
        return $this->error("该用户不存在");
    }

接下来是正常mysql仓库流程

public function Get_Data($date){
        $users = Users::where('id', 1)->first();
        $testData= TestData::whereIn('limit_id', [1,2,3])
            ->where('test_id', $users->id)
            ->where('date', $date)
            ->get();
        return $this->success($testData);
    }

最后是存入redis流程

public function Store_Data($date, $data){
        $redis = Redis::connection('default');
        $user= Users::where('id',1)->first();
        if($user){
            $redis->set('user_'.$user->id, json_encode($data));
        }
    }

接下来来看结果
先进入服务器清除缓存 先redis-cli进入redis 再用flushall清除所有数据
在这里插入图片描述
再请求界面按F12进入网络调试界面后我们可以看到第一次走mysql获取的时间
在这里插入图片描述
然后第二次获取走redis的获取时间
在这里插入图片描述
兄弟们这就是差距啊

你可能感兴趣的:(php,laravel,redis,缓存)