我是否正确使用 redigo HDEL?
Am I using redigo HDEL correctly?
我似乎对使用 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 // # of keys deleted
这确实有效:
s.transClient.Do("MULTI")
for _, keyToDelete := range keysToDeleteArr {
_, err := s.transClient.Do("HDEL", myhash, keyToDelete)
}
s.transClient.Do("EXEC")
为每个 HDEL 提供输出 (int64) 1。从 documentation 和 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)...)
我似乎对使用 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 // # of keys deleted
这确实有效:
s.transClient.Do("MULTI")
for _, keyToDelete := range keysToDeleteArr {
_, err := s.transClient.Do("HDEL", myhash, keyToDelete)
}
s.transClient.Do("EXEC")
为每个 HDEL 提供输出 (int64) 1。从 documentation 和 redigo lib 上的静态代码分析来看,切片似乎是 fields
构造一个包含命令参数的[]interface{}
。将 interface{}
的切片作为 variadic argument:
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)...)