redis笔记

  • 推荐链接 Redis 命令参考
  • redis 数据类型详解 以及 redis适用场景场合
  • 吕昌博客
  • 查看所有的key keys *
  • 删除所有的信息 flushdb
  • expire key seconds 为某个键设置过期时间 ttl key 查看剩余时间

把数据表里面的数据取出来存到redis里面,用的是list(存id,键)和hash(存数据,值)

private $list = 'LIST_TEACHER_INFO'; 
private $hash = 'HASH:TEACHER:INFO:';
    
public function index()
{
//Redis::exists      检测key是否存在,存在返回true,不存在false
  if (!Redis::exists($this->list)){
      $datas = \DB::table('job_publish')->get(['id','title','desc']);
      foreach ($datas as $v){
//写入队列和hash
          Redis::rpush($this->list,$v->id);
          //先转对象和遍历后再转对象,得到的结果是一样的,但我觉得先转对象比较好
          $data = $this->custompage->objectToArray($v);
          Redis::hmset($this->hash.$data['id'],$data);
      }


//查询队列 $skip,$number是条件
      $rel = Redis::lrange($this->list,0,-1); //取出全部的id
//    $rel =  array_unique($rel);  // 但是我做测试的时候,多插入了一次数据,相同的值重复了。
// 给$this->listjob设置过期时间,否则,永远都不会有新的数据更新,单位是秒。我们这里设置一小时更新
            Redis::expire($this->listjob,60*60);
      $data = array();
      foreach ($rel as $k){
          $data[] = Redis::hgetall($this->hash.$k);
      }
      $datas = $this->custompage->arrayToObject($data);
  }else{
      $list = Redis::lrange($this->list,0,-1);
      $data = array();
      foreach ($list as $k){
          $data[] = Redis::hgetall($this->hash.$k);
          
          
      }
      $datas = $this->custompage->arrayToObject($data);
  }
  return $datas;
}

/*
 * 通过id查找缓存数据
 */
public function getIdPublish($id)
{
    if (!Redis::exists($this->hashjob.$id)){
        $jobpublishs = DB::table('job_publish')->where('id',$id)->first();
        Redis::hmset($this->hashjob.$id,$jobpublishs); //此处可以$jobpublishs->id,也可以直接用$id,因为取出来的数据id肯定是等于参数id的
        $data = Redis::hgetall($this->hashjob.$id);   //取值
        $datas = $this->custompage->arrayToObject($data);
    }else{
        $data = Redis::hgetall($this->hashjob.$id);
        $datas = $this->custompage->arrayToObject($data);
    }
    return $datas;
}

列表与数据集

  • 发现列表和数据集都有共同特征类似PHP中的索引数组,但数据集中的元素是唯一的,列表可以不是唯一
  • sadd key members 给key集合添加值,可以同时添加多个值
  • smembers key //查看所有的key集合

你可能感兴趣的:(redis笔记)