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)哈希类型
分类:
Redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2022-04-27 Git -git入门介绍、常用技巧(合并分支)
2022-04-27 数据结构 - 游戏开发中的帧同步与状态同步
2022-04-27 Golang - 如何读取YAML、JSON、INI等配置文件