Redis使用基本套路

Redis的数据,通常都是来自于数据库。

存入Redis当中,可以快速的查询。不用每次都关联查询,然后其他处理什么的。

通常可以把一些,不经常变的数据存储其中。

避免数据变动,而Redis缓存数据不变,可以为缓存数据设置一个过期时间。

通常Redis存储的数据都是数组进行json加密,而取出的时候,进行json解密就可以了。

变量命名的时候,确保每个key都是唯一的。可以用冒号分割变量。

基础版本:

// 获取题目类型数据
vendor('Func.Red');
$red = Red::create();
$red_result = $red->get('question:type:select');
if (!$red_result) {
    // 获取数据
    $question_type_model = M('question_type');
    $question_type_list = $question_type_model->where(['level'=>2])->order('pid asc,weight desc')->select();
    $question_type_select = [];
    foreach ($question_type_list as $k => $item) {
        $question_type_select[$k]['id'] = $item['id'];
        $question_type_select[$k]['name'] = $item['remark']."【".$item['short_name']."】";
    }
    // 存入Redis
    $red->set('question:type:select',json_encode($question_type_select));
} else {
    $question_type_select = json_decode($red_result,true);
}

$this->assign('question_type_select',$question_type_select);

定时版本:

// 获取题目类型数据
vendor('Func.Red');
$red = Red::create();
$red_result = $red->get('question:type:select');
if (!$red_result) {
    // 获取数据
    $question_type_model = M('question_type');
    $question_type_list = $question_type_model->where(['level'=>2])->order('pid asc,weight desc')->select();
    $question_type_select = [];
    foreach ($question_type_list as $k => $item) {
        $question_type_select[$k]['id'] = $item['id'];
        $question_type_select[$k]['name'] = $item['remark']."【".$item['short_name']."】";
    }
    // 存入Redis
    $red->setEx('question:type:select',3600*24,json_encode($question_type_select));
} else {
    $question_type_select = json_decode($red_result,true);
}
$this->assign('question_type_select',$question_type_select);

一天有效。

posted @ 2018-06-15 09:56  TBHacker  阅读(981)  评论(0编辑  收藏  举报