我正在使用go-redis,并尝试使正在执行的Set到期。
文档中的示例显示-
func ExampleClient_Set() {
// Last argument is expiration. Zero means the key has no
// expiration time.
err := rdb.Set("key", "value", 0).Err()
if err != nil {
panic(err)
}
// key2 will expire in an hour.
err = rdb.Set("key2", "value", time.Hour).Err()
if err != nil {
panic(err)
}
}
根据我从time
文档(https://golang.org/pkg/time/)收集的信息,时间。小时应返回“小时返回t所指定的日期内的小时,范围为[0,23] ”,这将使到期值有所不同,具体取决于代码在一天中的什么时间运行。我确定这不是他们想要的,而且我确定编写模块的人都知道Go比我好,我无法想象这就是它的实际作用。
很沮丧,我读了Set(https://github.com/go-redis/redis/blob/0658532833205c238a41687728cb13c294504162/commands.go#L839)的go-redis代码,看起来它需要几秒钟,除非您进行了设置,否则它需要毫秒,所以我通过了{{1 }},然后在第一次运行时就说“您要求120ns,但最小值是1ms”……我加了一堆零,它几乎在我完成120
之后就过期了,所以我最终放弃了,只是决定寻求一些帮助以使其正确执行,而不是在我想要的每个值上添加一堆零并希望它能正常工作。
我有时间。现在一分钟-根据示例,我想给我一点时间,但是我实际上想要两分钟,阅读完所有这些内容并尝试所有这些方法之后,我一无所知。帮助将不胜感激!
答案 0 :(得分:4)
根据我从时间文档(https://golang.org/pkg/time/)收集的信息,时间。小时应该返回“小时返回t所指定的一天中的小时,范围为[0,23]。” >
您正在查看the documentation for time.Time.Hour
,您可以这样使用它:
now := time.Now()
fmt.Println(now.Hour())
您要查找的文档是the constant time.Hour
,这是一个time.Duration
,定义为60 * Minute
–恰好向您展示如何获取所需的两分钟
2 * time.Minute
答案 1 :(得分:2)
您将time.Hour与Time.Hour()混淆了。
time.Hour
是一个常数,表示一个小时的持续时间。这就是示例中使用的代码。
Time.Hour()
是一种基于time.Time
值的方法,该值将返回指定日期(如您在文档中引用的那样)内的小时。
答案 2 :(得分:0)
printf("ULLONG_MAX : %llu\n", (unsigned long long int) ULLONG_MAX);
printf("Big Integer : %llu\n", (unsigned long long int) 1234567890123456);
API所需要的是Set
类型。如果需要两分钟,请使用:
time.Duration
您正在查看的是err := rdb.Set("key", "value", 2*time.Minute).Err()
而不是Time.Hour()
的文档。