如何在golang中设置redis键的到期时间

时间:2016-11-18 10:36:40

标签: go redis

我正在使用golang作为我的后端。我正在redis中存储一些令牌值。我设置值HSET并获取HGETALL中的值。我想知道是否有任何函数来设置键的到期日期即im存储在redis database.i中,需要在1小时后删除令牌及其数据。我使用Redigo包进行redis。谢谢。感谢任何帮助。

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

2 个答案:

答案 0 :(得分:3)

Redis documentation不支持“HMSETEX”之类的命令。 “HMSET”修改了hashkeys而不是root键。根密钥级别支持TTL,而不是哈希密钥级别。因此,在您的情况下,您必须在单独的调用中执行类似的操作:

redisCon.Do("EXPIRE", key, ttl)

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

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

func Expire(RConn *redigo.Conn, key string, ttl int)

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

func (c *Client) TTL(key string) *DurationCmd

答案 1 :(得分:1)

对于使用go-redis库的用户,可以通过调用

来设置到期时间
_, err = redisClient.Expire("my:redis:key", 1 * time.Hour).Result()

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

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