用户登录
用户注册

分享至

ThinkPHP6使用redis缓存

  • 作者: 黄山大大王
  • 来源: 51数据库
  • 2021-08-11

php安装redis扩展

redis命令

tp6缓存配置

1、安装redis扩展后运行

2、修改配置目录config下面的cache.php文件

return [
    'default'    =>    'file',
    'stores'    =>    [
        // 文件缓存
        'file'   =>  [
            // 驱动方式
            'type'   => 'file',
            // 设置不同的缓存保存目录
            'path'   => '../runtime/file/',
        ],  
        // redis缓存
        'redis'   =>  [
            // 驱动方式
            'type'   => 'redis',
            // 服务器地址
            'host'       => '127.0.0.1',、
            //  端口号
            'port'      => '6379',
            //  密码
            'password'=> "",
            //  默认缓存时间
            'timeout' => 3600
        ],  
    ],];

3、上代码

很好理解? 先获取redis的key,第一次查肯定是没有的,就从Mysql查询,然后设置key,再查询就读取key。

一句话:有缓存读取缓存,没有就查询数据(个人理解)

/**
* 查询商家信息
* @param $id 商家id
*/
public function getStoreInfo(Request $request)
{
    $validate = new CommonValidate([
        'id' => 'require|integer',
    ]);
    if (!$validate->check($request->param())) {
        return dm_json(1, $validate->getError());
    }
    $store_id = $request->param('id');
    $redis = new Redis();
    // 获取redis缓存
    $store_info = $redis->get('getStoreInfo' . $store_id);
    if (!$store_info) {
        $store_info = StoreModel::where(['store_id' => $request->param('id')])->find()->toArray();
        // 设置redis缓存 第一个参数 key,这里设置的是方法名拼接上传过来的商家id,防止重复,第二个参数就是 值
        $redis->set('getStoreInfo' . $store_id, $store_info,10);   //设置10秒过期 不填默认0为永久缓存
        return api_json('0', ',mysql', $store_info);
    } else {
        return api_json('0', 'reids', $store_info);
    }

}

4、查看效果

第一次访问

?

cmd命令行查看所有key?

?存到redis成功

10s内刷新页面 查询数据,读的redis缓存

10s后

软件
前端设计
程序设计
Java相关