作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 go-redis与 REDIS 服务器(版本 3.2.100)交互。
根据Redis documentation ,如果键不存在,则 TTL 命令应返回值 -2。
但是,如果 key 不存在,则 TTL 方法返回一个表示持续时间 (-2s) 的值,而不是整数。
下面的代码说明了这种行为。
package main
import (
"github.com/go-redis/redis"
"fmt"
)
func main() {
fmt.Print("Create a REDIS client now.\n")
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
ttl, _ := client.TTL("MyKey").Result()
fmt.Printf("%v\n", ttl)
if ttl < 0 {
if -1 == ttl.Seconds() {
fmt.Print("The key will not expire.\n")
} else if -2 == ttl.Seconds() {
fmt.Print("The key does not exist.\n")
} else {
fmt.Printf("Unexpected error %d.\n", ttl.Seconds())
}
}
}
输出:
Create a REDIS client now.
-2s
The key does not exist.
可以吗?我认为 GO 方法 TTL 应该返回一个整数,而不是负持续时间。
最佳答案
从redis中获取已有key的TTL作为time.Duration比较有用。 -1 和 -2 是异常(exception),断言为主要类型。如果 TTL 返回 (*DurationCmd, error) 可能会更方便,但我没有深入研究 go-redis 逻辑。我在这里没有看到问题。只需考虑您总是得到 time.Duration 作为结果。
关于去-redis : TTL returns a negative duration when the key does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49819777/
我是一名优秀的程序员,十分优秀!