登录
首页 >  Golang >  Go问答

我是否正确使用 redigo HDEL?

来源:stackoverflow

时间:2024-04-11 19:48:36 351浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《我是否正确使用 redigo HDEL?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我似乎有使用 hdel 命令界面的正确用法,但似乎删除了 0 条记录。我在这里遗漏了什么吗?

以下是有用的代码片段:

这不起作用:

keystodeletearr []string //this has valid key values from upstream

s.transclient.do("multi")
_, err := s.transclient.do("hdel", myhash, keystodeletearr)
s.transclient.do("exec")

给出输出 (int64) 0 // # 已删除的键

这确实有效:

s.transClient.Do("MULTI")
for _, keyToDelete := range keysToDeleteArr {
  _, err := s.transClient.Do("HDEL", myhash, keyToDelete)
}
s.transClient.Do("EXEC")

为每个 hdel 提供输出 (int64) 1。从文档和 redigo lib 上的静态代码分析来看,切片似乎是 fields 可接受的参数


正确答案


构造一个包含命令参数的 []interface{}。将 interface{} 的切片作为 variadic argument 传递给 do 方法:

args := make([]interface{}, 0, len(keystodeletearr) + 1)
args = append(args, myhash)
for _, v := range keystodeletearr {
    args = append(args, v)
}
 _, err := s.transclient.do("hdel", args...)

使用redigo的Args单行执行上面的代码:

_, err := s.transClient.Do("HDEL", redis.Args{}.Add(myhash).AddFlat(keysToDeleteArr)...)

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>