mongodb 设置过期时间 mongodb缓存

看过好几个帖子都没有找到有关mongodb失效时间的准确说明,所以跑去看了看api大概了解了下

mongodb失效的机制大概是这样的

 为集合创建一个indexes(索引)

     

db.testCollection.ensureIndex( { "Date": 1 }, { expireAfterSeconds: 10 } )

然后确保每次插入数据的时候有该列,mongodb将会自动为你删除该列

db.testCollection.insert({"Date" : new Date(),"name":"zs","age":18})
下边是我在robomongo里截图看到的
设置的失效列必须为索引并且为日期格式





### MongoDB缓存机制及其实现方式 MongoDB 自身并不提供内置的应用级缓存功能,但可以通过多种方式来增强数据访问效率并减少重复查询带来的负载。主要的缓存策略包括内存映射文件、操作系统级别的页缓存以及应用层面上引入第三方缓存工具。 #### 内存映射文件 (Memory-Mapped Files) MongoDB 使用内存映射文件作为存储引擎的一部分,在读取文档时会将磁盘上的数据加载到内存中[^1]。这种方式使得频繁访问的数据能够驻留在物理 RAM 中,从而加快检索速度。当有新的写入操作发生或者旧有的数据被修改后,变更会被记录在一个日志式的预写日志(WAL)里,并最终反映回原始位置上。 #### 操作系统页面缓存 (OS Page Cache) 除了 MongoDB 自己管理的部分外,很大一部分工作是由底层的操作系统完成的——即 OS page cache 页面缓存。每当应用程序请求某些不在当前进程地址空间内的数据块时,Linux 或其他 Unix-like 系统将会自动把它们载入内存,并保持一段时间以便后续可能再次使用的快速获取[^2]。这种机制对于提高随机 I/O 密集型任务特别有效果。 #### 应用程序级别缓存 为了进一步改善性能表现,可以在应用程序内部集成额外的一层高速缓存解决方案,比如 Redis 或 Memcached 。这类外部服务专门用来保存临时性的计算结果或者是经常不变的历史版本信息等,以此减轻主数据库的压力并加速响应时间[^3]。 ```java // Java 示例:使用Redis作为缓存中间件 Jedis jedis = new Jedis("localhost"); String key = "cacheKey"; if (!jedis.exists(key)) { // 如果不存在于redis,则从mongoDb拉取数据并设置到redis中 Document doc = mongoCollection.find(eq("_id", id)).first(); String jsonString = objectMapper.writeValueAsString(doc); jedis.setex(key, 60 * 5, jsonString); // 设置过期时间为5分钟 } else { // 否则直接返回缓存的结果 String cachedValue = jedis.get(key); } ``` 通过上述措施相结合的方式,可以有效地优化 MongoDB 查询性能,尤其是在面对大量并发请求的情况下更能体现出优势所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值