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);
    }
posted @ 2022-01-13 16:13  在斑马线上散布  阅读(950)  评论(0编辑  收藏  举报
夫人不言,言必有中。这是高级臣僚的一种可贵品质,言辞精炼,直抵要害。