跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Golang怎么Redis设置键值_Golang如何用Set存储字符串类型数据【基础】

Go用redis/v9存字符串必须调用client.Set()并传string值,struct/map需JSON序列化;过期时间用time.Duration;中文emoji需确保UTF-8编码;client.Set()操作Redis String类型,非Set集合结构。 Go 连 Redis 用
redis.Set
存字符串,别直接传 struct 或 map Go 里用
github.com/go-redis/redis/v9
写入字符串到 Redis,核心是调用
client.Set()
方法。它只接受
string
类型的值(或能转成 string 的类型),不能直接塞
struct
、
map
或
[]byte
—— 否则会 panic 或存成乱码。 常见错误现象:
redis: nil
报错(实际是传了
nil
值),或存进去后用 redis-cli 查看是
&{...}
这种 Go 内存地址格式(说明误用了
fmt.Sprint()
或没序列化)。 必须手动序列化:JSON 是最稳妥选择,用
json.Marshal()
转成
[]byte
,再转
string
;或直接用
string(b)
过期时间单位是
time.Duration
,别传整数秒(如
3600
),得写
3600 * time.Second
如果值本身含双引号或换行,
json.Marshal()
会自动转义,安全;手拼字符串容易出错
client.Set()
的三个必填参数和常见配置项
client.Set(ctx, key, value, expiration)
是最简调用形式,四个参数缺一不可:
ctx
:带超时的 context,别用
context.Background()
在生产环境长期运行
key
:string,建议加命名空间前缀,比如
"user:123:profile"
,避免键冲突
value
:必须是 string;若原数据是 int/bool,用
strconv.Itoa()
或
fmt.Sprintf()
转,别用
string(int)
(那是 ASCII 码转换)
expiration
:过期时间,
0
表示永不过期;
-1 * time.Second
表示删除该 key(等价于
DEL
) 可选配置通过
redis.SetArgs{}
传,比如: 立即学习 “ go语言免费学习笔记(深入) ”;
redis.SetArgs{ Mode: redis.SetNX, // 仅当 key 不存在时设置(实现分布式锁常用) Get: true, // 返回旧值(Redis 6.2+ 支持) }
存中文、emoji 或特殊字符要确认编码和客户端配置 Go 字符串默认是 UTF-8 编码,Redis 也原生支持,但问题常出在中间环节: 如果从 HTTP 请求体或数据库读取的字符串本身是乱码(比如 GBK 编码未转 UTF-8),存进去还是乱码 用
redis-cli
查看时,终端不支持 UTF-8 显示(如某些 Windows CMD),会显示
\u4f60\u597d
,这不是 Redis 问题,是显示层问题 确保
redis.NewClient()
初始化时没误设
Option.Password
或
Option.DB
导致连错实例(不同 DB 间数据隔离) 验证方法:存一个明确的中文字符串,然后用
redis-cli -h host -p port GET your:key
直接查,输出应为原始中文。 Set 类型不是这里说的
client.Set()
,别混淆 标题里提到“用 Set 存储字符串”,容易误解为 Redis 的
SET
数据结构(即集合)。但
client.Set()
是命令名,对应 Redis 的
SET
命令,操作的是 String 类型的键值对,不是集合。 如果真要存「多个不重复字符串」(比如用户标签列表),该用
client.SAdd()
+
client.SMembers()
操作 Set 结构:
client.SAdd(ctx, "user:123:tags", "golang", "redis", "backend") vals, _ := client.SMembers(ctx, "user:123:tags").Result() // vals 是 []string{"golang", "redis", "backend"}(顺序不定)
String 类型和 Set 类型底层存储、内存占用、适用场景完全不同:前者适合单值缓存(如用户资料 JSON),后者适合去重集合操作(如粉丝 ID 列表)。选错类型,后期改起来成本高。

相关文章