gpt4 book ai didi

去-redis : TTL returns a negative duration when the key does not exist

转载 作者:可可西里 更新时间:2023-11-01 11:12:49 27 4
gpt4 key购买 nike

我正在使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com