ExpireAt和Expire类似,只是参数是过期的时间点。TTL查看key还有剩余多少秒才过期。incr,expire这两条命令不是原子操作,如果需要进行事务操作,可以使用Multi,Exec,详见《Go语言采用go-redis模块对Redis进行批量操作(MULTI和EXEC) 的示例及性能》
package main
import (
"fmt"
"github.com/go-redis/redis"
"time"
)
func main() {
client := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6380",
Password: "",
DB: 0,
})
var ok bool
var err error
var reply int64
reply, err = client.Incr("key").Result()
fmt.Printf("reply=%v err=%v\n", reply, err)
ok, err = client.Expire("key", 60*time.Second).Result()
fmt.Printf("ok=%v err=%v\n", ok, err)
var expire time.Duration
expire, err = client.TTL("key").Result()
fmt.Printf("expire=%v err=%v\n", expire, err)
ok, err = client.ExpireAt("key", time.Now().Add(60*time.Second)).Result()
fmt.Printf("ok=%v err=%v\n", ok, err)
expire, err = client.TTL("key").Result()
fmt.Printf("expire=%v err=%v\n", expire, err)
}
输出:
reply=1 err=<nil>
ok=true err=<nil>
expire=1m0s err=<nil>
ok=true err=<nil>
expire=59s err=<nil>
相关文章:
《Go语言:go-redis客户端对sentinel模式下(非集群cluster)redis-server主从切换的支持》