能否获取etcd中键值对的创建时间及历史版本的相关信息?
etcd键值对创建时间及历史版本时间相关说明
键值对创建日期时间的存储情况
etcd v3 不会默认直接存储键值对的创建时间戳,但可以通过两种方式获取相关时间信息:
- 每个键值对都附带一个全局递增的
revision(版本号),集群的Raft日志会记录每个revision对应的操作时间戳。你可以用etcdctl get <key> --write-out=json拿到键值对的revision,再结合集群元数据关联到具体时间。 - 如果需要显式留存创建时间,建议在写入键值对时主动将时间戳作为值的一部分存储,比如:
etcdctl put mykey '{"content":"demo","created_at":"2024-05-20T14:30:00Z"}'
历史版本键值对的时间信息
当etcd通过--auto-compaction-retention配置开启历史版本保留后,历史版本的键值对会保留对应的revision:
- 你可以通过
etcdctl get <key> --rev=<目标版本号>获取指定版本的键值对,再通过该版本的revision关联到对应的操作时间戳。 - 若开启了自动压缩,超过保留期限的历史版本会被清理,无法再查询到相关信息。
注意事项
etcd官方文档中没有提供直接返回键值对创建时间的API,核心依赖revision与Raft日志的关联间接获取时间;如果业务对时间戳有强需求,自行在写入时显式存储是更可靠的方案。
内容的提问来源于stack exchange,提问作者user21819272
相关产品推荐
相关产品推荐

