- 推薦鏈接 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集合