- 推荐链接 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集合