Redis过期机制
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 小时。