Redis - string类型

Redis的key是String类型的,如果Value如果也是String类型,相当于把两个字符串映射起来,即key-value。这里字符串不仅仅是传统意义上的字符串,例如“hello world”,也可以是JSON、HTML等。

1、string 字符串

//string------------------------------------------------------------------------  
key := "go2key"  
//过期时间1小时  
err = client.Set(key, "我是值", time.Hour).Err()  
if err != nil {  
   fmt.Println("set err", err)  
   return  
}  
  
//获取  
value, err := client.Get(key).Result()  
if err != nil {  
   fmt.Println("Get err", err)  
   return  
}  
fmt.Printf("key:%v 值:%~~~~v \n", key, value)

存储命令:Set

client.Set(key, "我是值", time.Hour)

读取命令:Get

value, err := client.Get(key).Result()

2、struc 结构(json字符串)

//json---------------------------------
//存储结构  
doctor := Doctor{1, "钟南山", 83, 1, time.Now()}  
doctorJson, _ := json.Marshal(doctor)  
client.Set("doctor2", doctorJson, time.Hour)  
  
//读取结构  
doctorResult, _ := client.Get("doctor2").Result()  
var doctor2 Doctor  
//反序列化  
json.Unmarshal([]byte(doctorResult), &doctor2)  
fmt.Println("doctor2", doctor2)

解析:
存储结构其实也是存储string,只是把struc序列化成json,等读取的时候再反序列化成struc
序列化:

doctorJson, _ := json.Marshal(doctor)

反序列化:

json.Unmarshal([]byte(doctorResult), &doctor2)

3、设置过期时间

操作string数据的时候,可以在方法里直接传入过期时间。但list、hash、set、zset都没有直接提供相应参数,但redis可以额外设置key的过期时间

//Expire------------------------------------------ 
//设置过期时间 30秒后过期  
client.Expire(hashKey, time.Second*30)  
client.ExpireAt(hashKey, time.Now().Add(time.Second*30))  
//删除key  
//client.Del("go2key", "go2list")  
  
//ttl 获取key的生存时间  
duration, err := client.TTL(key).Result()  
if err != nil {  
   fmt.Println("TTL err", err)  
   return  
}  
fmt.Printf("key%v的有效时间,%v,%v \n", key, duration.String(), duration.Seconds())

4、原生,序列化,哈希类型缓存方式对比

 当涉及到缓存用户信息时,有多种不同的缓存方式可供选择。以下是对三种常见的缓存方式进行详细比较和分析:原生字符串类型、序列化字符串类型(例如JSON格式),以及哈希类型。

1)原生字符串类型

2)序列化字符串类型(例如JSON格式)

3)哈希类型

posted @ 2023-04-27 13:58  李若盛开  阅读(23)  评论(0)    收藏  举报