Laravel使用Redis的哈希存儲用戶信息


描述:

  用戶第一次登錄,寫入緩存的哈希數據,下次直接通過緩存的哈希數據讀取。

介紹:

  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);
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM