不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!

mongodb一直都在不断的更新,不断的发展,那些非常好玩也非常实用的功能都逐步加入到了mongodb中,这不就有了本篇对ttlindex的介绍,刚好我们的生产业务场景中就有一个案例。。。

一:案例分析

生产的推荐系统要给用户发送短信和邮件的关联营销。第一波:当用户在淘宝下单之后发送一次短信和邮件千人千面,第二波:为了增加回购率,10天之后将会再次触发短信和邮件方式的千人千面,场景就这样的,流程图如下。

技术上来说:第一波营销中已经下单成功的客户需要给保存起来,因为10天后需要对这一批用户再发送一次,如果不让数据无限膨胀,我需要不断清理 >10 天的数据,写个脚本虽然简单但没这个必要,可以用 mongodb 中的 ttlindex 索引来搞定这件事,设定 10天 之后自动过期。

二:ttlIndex

现在我想大家对 ttlIndex 有了大概的认识,查一下官方文档:https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#db.collection.createIndex,  看看这种 ttlIndex 怎么创建?


db.collection.createIndex(keys, options)

从 options 中的 expireAfterSeconds 参数来看,这个 value 是一个 int 型的 second,而且这个 ttlIndex 是需要建立在docment的field上面的,接下来创建一个简单的planeollection,并且date的过期时间是2s,主要是用来测试一下嘛。。。

过 60s 之后再查看一下数据,数据已经没有啦~~~

可能有些人就有疑问了,为什么这里要说最多 60s 之后再查看数据,当然是有原因的,因为 mongod 底层机制会开一个 background task,60s轮转一次,不信的话,你可以看下官网的描述哦!

好了,本篇就说这么多,希望对你有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值