为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中使用 HSET 将空映射插入 Redis 失败

在 Golang 中使用 HSET 将空映射插入 Redis 失败

Go
慕姐4208626 2022-11-23 14:19:02
HSET我有一些代码可以使用以下命令将地图插入 Redis :prefix := "accounts|asdfas"data := make(map[string]string)if _, err := conn.Do("HSET", redis.Args{}.Add(prefix).AddFlat(data)...); err != nil {    return err}如果data其中有值,那么这将起作用,但如果data为空,则会发出以下错误:ERR 'hset' 命令的参数数量错误这似乎是AddFlat函数将映射转换为键及其关联值的交错列表的结果。当地图为空时这不起作用是有道理的,但我不确定如何处理它。我宁愿不向 map 添加空值,但这就是我所能想到的。有没有一种方法可以更符合 Redis 的处理方式?
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

作为一般经验法则,Redis 不允许也从不保留空数据结构(对此有一个例外)。


这是一个例子:


> HSET members foo bar

(integer) 1


> EXISTS members

(integer) 1


> HDEL members foo

(integer) 1


> EXISTS members

(integer) 0

因此,如果你想保留你的数据结构,你必须至少有一个成员在其中。您可以在 Hash 中添加一个虚拟项并在您的应用程序逻辑中忽略它,但它可能不适用于其他数据结构,如 List。


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 301 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号