数据生命周期
所谓的 “数据生命周期” 是指:为数据设定一定的生存期限,过了这个时间后, 此数据就被删除掉(失效)。
在进行web开发的时候,有很多需求场景是要求数据是具有一定的生命周期,比如:
- 具有一定时效的用户登录会话
- 邀请码系统的时效控制
- 具有时效的二维码/短信/邮件验证系统
- 接口调用认证的token有效期
- 第三方授权的期限控制
- 分享内容的时效控制
- 记录一段时间的日志
本文将以如下两种数据库特性为例子来对此功能的实现进行介绍:
- mongodb
- redis
3 mongodb
3.1 实现方法
在mongodb中有个 TTL(Time To Live 生存时间)索引 功能:
TTL索引是一种特殊索引,通过这种索引 MongoDB 会过一段时间后自动移除集合中的文档。 这对于某些类型的信息来说是一个很理想的特性,例如: 机器生成的事件数据,日志,会话信息等,这些数据都只需要在数据库中保存有限时间。
- 如果你可以设定这个生命周期是多久他只要过了这段时间之后,它就会自动删除掉
- 删除的周期就是一分钟左右(和mongodb服务的负载有关),mongodb后台会进行周期性地检查这些索引字段
在 mongodb 中的实现方式:
db.ttl_log_session.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
主要解释如下:
- 对 ttl_log_session 合集建立索引
- 索引字段为 lastModifiedDate
- 索引顺序是 升序
- 有效生存周期为 3600 秒
达到的效果:以 lastModifiedDate 时刻开始,经过 3600 秒之后,此文档会失效被删除掉。

