当前位置: 首页 > article >正文

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 小时。

http://www.kler.cn/a/554184.html

相关文章:

  • 从线程池到负载均衡:高并发场景下的系统优化实战
  • DeepSeek赋能智慧城市:多场景应用,打造感知-决策-执行的闭环解决方案架构
  • MySQL 的存储引擎有哪些?它们之间有什么区别? MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别? MySQL 的索引类型有哪些?
  • 青龙圣者的训练脚本训练 Flux lora
  • 基于 Spring Boot + 微信小程序的短文写作竞赛管理系统设计与实现(源码+文档)
  • 力扣-二叉树-236 二叉树的最近公共祖先
  • 基于微信小程序的家政服务预约系统的设计与实现(php论文源码调试讲解)
  • 开源语音克隆项目 OpenVoice V2 本地部署
  • umi react+antd 判断渲染消息提示、input搜索、多选按钮组
  • 使用Java爬虫获取1688店铺所有商品信息(item_search_shop API接口)
  • 前端自动化部署的极简方案
  • 985本硕,网络安全方向,走算法还是走开发?
  • 软件测试面试题精选33道,附答案+文档
  • 前端函数在开发环境与生产环境中处理空字符串的差异及解决方案
  • RMSNorm算子的CUDA实现
  • AI前端开发技能提升与ScriptEcho:拥抱智能时代的新机遇
  • 【C++】 Flow of Control
  • vscode通过ssh连接服务器实现免密登录+删除
  • (leetcode42 前缀后缀最值)接雨水
  • MySQL数据库(4)—— 数据类型