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); }
-----END
影子是一个会撒谎的精灵,它在虚空中流浪和等待被发现之间;在存在与不存在之间....