我使用 golang 作为我的后端。我在 redis 中存储一些令牌值。我正在设置值 HSET 并获取 HGETALL 中的值。我想知道是否有任何函数可以设置我的密钥的过期时间存储在redis数据库中。我希望令牌及其数据在1小时后删除。我正在使用 Redigo 包来实现 redis。谢谢。感谢任何帮助。
I use this to set the struct with has token as key
redisCon.Do("HMSET", redis.Args{}.Add(hashToken).AddFlat(&dataStruct)...)
对于使用
go-redis
库的用户,可以通过调用 设置过期时间
_, err = redisClient.Expire("my:redis:key", 1 * time.Hour).Result()
或者,您可以在插入时执行此操作
_, err = redisClient.Set("my:redis:key", "value", 1 * time.Hour).Result()
Redis 文档不支持“HMSETEX”等命令。 “HMSET”修改哈希键而不是根键。根密钥级别支持 TTL,但散列密钥级别不支持 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
你可以这样做:
redisClient.Expire(context.Background(), key, 1*time.Second)