對于需要遍歷的列表數(shù)據(jù)猬腰,我們有必要通過緩存來減少對數(shù)據(jù)庫的讀寫壓力從而提高項目質(zhì)量际起,所以,對數(shù)據(jù)庫的增刪改查都需要同時操作redis雁乡,使得兩者保持同步第喳。
首先,laravel的DB方法得到的是一個對象踱稍,下面是一個對象轉(zhuǎn)數(shù)組的方法曲饱。
public static function objToArray($obj)
{
$_arr = is_object($obj)? get_object_vars($obj) :$obj;
foreach ($_arr as $key => $val){
$val=(is_array($val)) || is_object($val) ? self::objToArray($val) :$val;
$arr[$key] = $val;
}
return $arr;
}
然后,通過redis的list 和hash類型來構(gòu)造出類似mysql表的數(shù)據(jù)關(guān)系珠月,list作為這個表的唯一索引扩淀,hash中存的數(shù)組就相當(dāng)于某個索引對應(yīng)的列,這樣啤挎,將mysql中取得的數(shù)據(jù)通過遍歷驻谆,插入到redis中,注意list和hash的對應(yīng)關(guān)系庆聘,從redis中讀取數(shù)據(jù)的時候胜臊,將負(fù)責(zé)該業(yè)務(wù)數(shù)據(jù)的lish和hash進行遍歷,拼裝數(shù)組并返回伙判∠蠖裕總之,緩存的原則就是增刪改查都要和mysql保持一致澳腹。
常用方法匯總
del // 刪除key
exists // 檢查key是否存在
expire // 給一個key設(shè)置存活時間
hgetall // 返回指定key的哈希中所有鍵值對的數(shù)組
hmset //將鍵值對數(shù)組存入指定key的哈希中
hset // 設(shè)置指定key的哈希中某個字段的值
lrange //獲得指定范圍的元素的數(shù)組 lrange(0, -1)獲得所有
rpush //從列表的右側(cè)插入一個值
redis命令大全
這是redis官網(wǎng)织盼,命令頁很精簡很清晰,原生redis語法predis都是能直接用的酱塔,基本上看看就會用了