博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
阅读量:4034 次
发布时间:2019-05-24

本文共 855 字,大约阅读时间需要 2 分钟。

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轮转一次,不信的话,你可以看下官网的描述哦!

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

转载地址:http://sskdi.baihongyu.com/

你可能感兴趣的文章
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
arm-linux开机读取硬件时钟,设置系统时钟。
查看>>
交叉编译在x86上调试好的qt程序
查看>>
/dev/input/event0 键盘输入
查看>>
qt 创建异形窗体
查看>>
可重入函数与不可重入函数
查看>>
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
opencv test code-1
查看>>