如何在golang中设置redis key的过期时间

Raj*_*mar 6 go redis

我使用 golang 作为我的后端。我在 redis 中存储了一些令牌值。我正在设置值 HSET 并在 HGETALL 中获取值。我想知道是否有任何函数可以设置我存储的键的到期时间在 redis 数据库中。我希望令牌及其数据在 1 小时后被删除。我正在为 redis 使用 Redigo 包。谢谢。感谢任何帮助。

I use this to set the struct with has token as key    
redisCon.Do("HMSET", redis.Args{}.Add(hashToken).AddFlat(&dataStruct)...)
Run Code Online (Sandbox Code Playgroud)

Jos*_*ush 10

对于使用图书馆的人go-redis,您可以通过调用设置过期时间

_, err = redisClient.Expire("my:redis:key", 1 * time.Hour).Result()
Run Code Online (Sandbox Code Playgroud)

或者,您可以在插入时执行此操作

_, err = redisClient.Set("my:redis:key", "value", 1 * time.Hour).Result()
Run Code Online (Sandbox Code Playgroud)


Yad*_*dar 6

Redis 文档不支持像“HMSETEX”这样的命令。“HMSET”修改哈希键而不是根键。根密钥级别支持 TTL,而不是散列密钥级别。因此,在您的情况下,您必须在单独的调用中执行以下操作:

redisCon.Do("EXPIRE", key, ttl)
Run Code Online (Sandbox Code Playgroud)

您使用哪个客户端连接到redis?

对于 redigo,你可以使用这个 - https://github.com/yadvendar/redigo-wrapper 在那个 use 调用中

func Expire(RConn *redigo.Conn, key string, ttl int)
Run Code Online (Sandbox Code Playgroud)

对于 goredis - https://godoc.org/gopkg.in/redis.v5#Client.TTL 在此用途中:

func (c *Client) TTL(key string) *DurationCmd
Run Code Online (Sandbox Code Playgroud)