Redis过期机制
- IT业界
- 2025-09-06 12:45:02

const ( cacheDuration = 24 * time.Hour ) func SetToCache(rdb *redis.Client, key string, data []byte) error { return rdb.Set(rdb.Context(), key, data, cacheDuration).Err() }
以上函数中的rdb.Set(rdb.Context(), key, data, cacheDuration).Err()中的 cacheDuration一旦被设置,是不是就意味着,当数据在内存中存储超过这个时间,就会被删除,redis缓存中将不在有该数据了?
是的,在 Redis 中,cacheDuration 设置为 24 * time.Hour 表示缓存数据的过期时间为 24 小时。具体解释如下:
代码中的 cacheDuration const ( cacheDuration = 24 * time.Hour ) 这里 cacheDuration 被定义为一个常量,表示 24 小时。time.Hour 是 Go 语言中一个用于表示 1 小时时间长度的常量。因此,24 * time.Hour 等于 24 小时。 Redis 缓存过期时间 rdb.Set(rdb.Context(), key, data, cacheDuration).Err() 这行代码中的 cacheDuration 作为 Redis 的过期时间参数。当调用 SET 命令时,Redis 会将当前时间加上 cacheDuration 作为键的过期时间。如果超过这个过期时间,Redis 会认为该键已经过期,并在下次访问时删除它。 Redis 缓存数据有效期 当 cacheDuration 设置为 24*time.Hour 后,Redis 会确保数据在内存中的有效期为 24 小时。超过 24 小时后,Redis 会在后台清理过期数据。具体来说: Redis 会定期检查和删除过期的键。一旦识别出键已过期,Redis 会自动删除该键。 注意事项 Redis 的缓存清除机制: Redis 不会立即删除过期的键,而是在访问时或定期清理时删除。如果 Redis 的内存使用接近限制,它可能会更积极地删除过期的键。 数据仍然可能存在于 Redis 中: 在 24 小时后,数据会在 Redis 中被标记为过期,但直到 Redis 清理或访问时才会被删除。总之,cacheDuration 设置为 24*time.Hour 后,Redis 会在 24 小时后自动删除缓存数据,确保数据的生命周期不超过 24 小时。