不想写脚本清理 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輪轉一次,不信的話,你可以看下官網的描述哦!
好了,本篇就說這么多,希望對你有幫助。
總結
以上是生活随笔為你收集整理的不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跟我一起学.NetCore之Mediat
- 下一篇: 工作这几年所获、所感、所悟