描述:
用戶第一次登錄,寫入緩存的哈希數據,下次直接通過緩存的哈希數據讀取。
介紹:
Redis hash 是一個 string 類型的 field(字段) 和 value(值) 的映射表,hash 特別適合用於存儲對象。
Redis 中每個 hash 可以存儲 232 - 1 鍵值對(40多億)。
關鍵詞:
hexists :檢查鍵名是否存在
hget :獲取鍵名內容
hset :寫入內容
代碼:hset key(鍵名) field(域名) value(內容)
public function setHashUser(Request $request) { // 使用格式 // HSET key field value // 將哈希表 key 中的字段 field 的值設為 value $user_id = $request->input('user_id'); $user_name = $request->input('user_name'); //定義鍵名前綴 $cache_name = "user_info:USER_INFO_INFO"; //如果存在取緩存 if(Redis::hexists($cache_name, $user_id)){//檢查是否存在 $user_info = Redis::hget($cache_name, $user_id);//存在獲取 if(!empty($user_info)){ $info = json_decode($user_info, true); } echo '取的是緩存'; }else{ //不存在,取數據庫,並寫入緩存 $info = [ 'user_id' => $user_id, 'user_name' => $user_name, ]; //不存在即寫入,以$user_id作為哈希的域名 $flag = Redis::hset($cache_name, $user_id, json_encode($info));//不存在 寫入 if(!$flag){ //不成功,再寫一次 Redis::hset($cache_name, $user_id, json_encode($info)); } echo '取得時數據庫'; } dd($info); }