You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Redis中缓存值的最后更新时间?

获取Redis缓存键的最后更新时间

Redis本身没有内置存储键最后更新时间的机制,但可以通过以下几种方案实现需求:

1. 自定义存储元数据(最直接方案)

把缓存值和最后更新时间绑定存储,常用两种方式:

方式A:使用Hash结构存储

将值和更新时间作为Hash的两个字段,每次更新缓存时同步更新时间戳:

  • 设置/更新缓存:
    # 存储值和当前Unix时间戳
    HSET user:123 value "user_profile_data" updated_at 1700000000
    
  • 获取最后更新时间:
    HGET user:123 updated_at
    

方式B:存储包含时间戳的JSON字符串

把值和时间戳打包成JSON格式的字符串存储,读取后解析即可:

  • 设置/更新缓存:
    SET user:123 '{"value":"user_profile_data", "updated_at":1700000000}'
    
  • 获取后解析JSON中的updated_at字段即可得到更新时间。

2. 使用键空间通知追踪更新事件

通过Redis的键空间通知功能,监听键的修改事件,维护一个专门存储更新时间的哈希表:

  1. 先开启键空间通知:
    # 运行时临时开启(重启Redis后失效),也可在redis.conf中配置notify-keyspace-events KEA永久生效
    CONFIG SET notify-keyspace-events KEA
    
  2. 客户端监听键的修改事件(比如SET操作),当目标键被更新时,记录当前时间到key_update_times哈希表:
    # 监听到键user:123的SET事件时执行
    HSET key_update_times user:123 1700000000
    
  3. 获取指定键的最后更新时间:
    HGET key_update_times user:123
    

注意事项

  • 不要混淆OBJECT IDLETIME命令:该命令返回的是键的空闲时间(最后一次被访问的时间间隔),并非最后更新时间,不适合你的需求。

内容的提问来源于stack exchange,提问作者Thirumal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:15:33