首页 > 数据库 >mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理

mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理

时间:2023-04-18 12:35:27浏览次数:33  
标签:10 ttlIndex mongodb Cache collection TTLIndex date 我们

mongodb一直都在不断的更新,不断的发展,那些非常好玩也非常实用的功能都逐步加入到了mongodb中,这不就有了本篇对ttlindex的介绍,

刚好我们的生产业务场景中就有这个一个案例。。。

 

一:案例分析

     我们生产的推荐系统要给用户发送短信和邮件的关联营销。第一波是:当用户在淘宝上下订单之后,我们发送一次短信和邮件千人千面,第二波:

为了增加回购率,当用户在10天之后的交易默认完成之后,我们将会再次触发短信和邮件方式的千人千面,场景就这样的,针对这种场景,我就画出了

下面的图。

mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理_其他

其实呢,业务场景就是这样的,看起来非常简单,重点就在这里,第一波营销中已经下单成功的客户我们需要给保存起来,因为10天后我们需要对这

一批用户再发送一次,这样我们就需要用mongodb把当时已经下单成功的用户保存到mongodb中,如果你不maintain mongodb的话,那么mongodb

的数据将会积压的越来越多,这个时候我们就需要有一个机制,清空mongodb中10天之前的数据,对吧,因为这些数据已经是垃圾数据了,为了免去自己

写个脚本去清除这些麻烦的数据,这次我们使用ttlindex来让这些数据保存10天,也就是10天之后自动过期。

 

二:ttlIndex

    现在我想大家对ttlIndex有了大概的认识了,下面我们看看怎么创建,我使用的GUI工具是robomongo,大家可以在官网上下载一下即可。。。然后我们

要查询一下https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#db.collection.createIndex,看看这种collection

怎么创建。

db.collection.createIndex(keys, options)

mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理_字段_02

从这个options中的expireAfterSeconds参数来看,这个value是一个int,并且是以second为单位,然后我们可以看到,这个ttlIndex是需要建立在docment

的field上面的,然后我们继续往下看。

To create a TTL index, use the db.collection.createIndex() method with the expireAfterSeconds option on a field whose value is either a date or an array that contains date values.

 

从这句话中其实可以看到,这个field字段要么是date,要么是array中含有date字段,ok,看完这里,我们都明白了,接下来,我们创建一个简单的planeollection,

并且date的过期时间是2s,主要是用来测试一下嘛。。。

mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理_数据_03

mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理_mongodb_04

 

ok,其实就是这么简单,然后我们过60s之后再查看一下数据,可以看到,数据已经没有啦~~~

mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理_其他_05

 

可能有些人就有疑问了,为什么这里要说最多60s之后再查看数据,当然是有原因的,因为mongod有一个background task,60s启动一次进行index scan,

如果过期,那么就会进行清除,不信的话,你可以看下官网的描述哦。

mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理_字段_06

 

好了,本篇就说这么多,我想大家应该也知道了如何使用ttlIndex,当然我们也在幸福满满的使用这个玩意,感谢感谢~~~

 

标签:10,ttlIndex,mongodb,Cache,collection,TTLIndex,date,我们
From: https://blog.51cto.com/u_15353947/6202809

相关文章

  • HttpRuntime.Cache[key] as List<string>竟然会引用转值改变Cache的值
    HttpRuntime.Cache[key]asList<string>竟然会引用转值改变Cache的值此时HttpRuntime.Cache[key]的值会发生改变 ......
  • 连接MongoDB+Docker安装MongoDB
    一、连接MongoDB工具:studio3T下载:https://studio3t.com/download-thank-you/?OS=win641、无设置密码最终成功页面2、设置了密码后续同1二、安装MongoDB版本:5.0.5参考:https://www.cnblogs.com/cwp-bg/p/10403327.htmlhttps://blog.csdn.net/weixin_4......
  • memcache的客户端
    Memcached的java客户端已经存在三个了:官方提供的基于传统阻塞io的客户端 、DustinSallings实现的基于javanio的spymemcached和XMemcached。memcache常用Java客户端有三个:1、memcachedclientforJava  2、spymemcached 3、xmemcachedxmemcached上述三者中最优秀的。官网......
  • mongodb--聚合操作
    一、简单介绍mongodb的聚合操作分为管道操作和MapReduce操作等。聚合管道操作:将文档在一个管道处理完毕后,把处理的结果传递给下一个管道进行再次处理MapReduce操作:是将集合中的批量文档进行分解处理,然后将处理后的各个结果进行合并输出 二、聚合管道操作1、语法结构:pipl......
  • 提高查询效率,掌握MongoDB 4.2索引策略中的Measure Index Use技术
    1.使用$indexStats获取索引访问信息使用$indexStats聚合阶段获取有关集合的每个索引的使用情况的统计信息。例如,以下聚合操作返回有关orders集合上索引使用的统计信息:db.orders.aggregate([{$indexStats:{}}])版本3.2中的新功能。返回有关集合的每个索引的使用的统计信息......
  • mongoDB 4.2:赋能未来数据应用的智慧之选
    mongoDB是在2019年发布,具体特性如下图:1.FullTextSearchMongoDB4.2之前,全文搜索(FullTextSearch)的能力是靠TextIndex来支持的,在MongoDB-4.2里,MongoDB直接与Lucene等引擎整合,在Atlas服务里提供全文建索的能力。2.MongoDBFTS原理1.用户可以在Atlas上,对集合开启全......
  • mongoDB 3.0 安全权限访问
    mongoDB3.0访问控制改了很多,需要你老老实实的去看文档去验证,谷歌百度出来的多半就是错误的。还需要注意这个参数authenticationMechanisms。为了兼用2.6版本,我直接指定下面的参数:setParameter:authenticationMechanisms:MONGODB-CR下面看看如何创建访问控制权限不使用—aut......
  • mongodb基础教程
    知识点理解MongoDB的业务场景,熟悉MongoDB的简介,特点和体系结构,数据类型等.能够通过docker-compose创建并启动mongodb和mongo-express掌握MongoDB基本常用命令实现数据的CRUD掌握MongoDB的索引类型,索引管理,执行计划业务场景传统的关系型数据库(比如My......
  • SpringBoot 整合 MongoDB
    SpringBoot整合MongoDB好久没搞SpringBoot相关的东西勒,但最近看的代码涉及到了这部分,虽然之前没做过也能看懂,但还是从基础开始搞起比较好。准备工作SpringBoot项目创建这个本来都不用说的,SpringBoot创建项目还能不会啊,但因为某些限制,现在用不了专业版IDEA,只能用社区版,......
  • Springboot集成MongoDB存储文件、读取文件
    一、前言和开发环境及配置可以转载,但请注明出处。  之前自己写的SpringBoot整合MongoDB的聚合查询操作,感兴趣的可以点击查阅。https://www.cnblogs.com/zaoyu/p/springboot-mongodb.html 使用mongodb存储文件并实现读取,通过springboot集成mongodb操作。 可以有两种实现......