zoukankan      html  css  js  c++  java
  • MongoDB 存活時間 TTL 用法

    使用方法: db.Colloctions.ensureIndex({'date':1},{expireAfterSeconds:60})//date 为设置的索引,expireAfterSeconds为数据删除事件

    MongoDB 透過 mongod 背景處理過期的資料 https://docs.mongodb.com/manual/release-notes/2.2/ ,頻率為一分鐘一次。在建立索引時(ensureIndex)加入 expireAfterSeconds 選項與秒數就可以完成 TTL 設定。

    設定
    假設有一 Collection 名稱為 "forgetpwd",存活時間為 1800 秒,建立 TTL 索引時可以用以下設定:
    db.Test.ensureIndex({'date': 1}, {expireAfterSeconds: 1800})
    建立資料:
    db.Test.save({'user': 'toomore', 'date': New Date()})
    • 先生成索引,date为索引,expireAfterSeconds为存活时间

    • 然后插入数据 才能有效,插入的索引 date 必须为 Bson的时间类型,不然 TTL就会失效

    • 查找对应插入数据

    • 过了一分钟 ,再次查找数据 数据消失

    使用限制:

      • 索引栏位必須為 BSON 的時間格式,如果不是時間格式,TTL 就無效。

      • _id 栏位不能設定為 TTL 的時間索引栏位。(這有點可惜,ObjectID 本身既有時間紀錄在裡面,還需要再指定一個時間栏位有點多餘…)

      • 如果時間栏位是陣列(array)包含多個時間值,則以最近的時間為基準設定。

      • 不可以在 Capped Collections 設定 TTL,因為 Capped Collections 格式的資料本身就無法刪除。

      • 在某些情況下,過期的資料還會存在,直到下一個 mongod 定期的刪除循環止。

      • expireAfterSeconds时间设置60以下没有意义,因为TTL的清除数据頻率為一分鐘一次,低于一分钟的,它要等到轮询时间,才会清除

  • 相关阅读:
    PL/SQL异常处理
    spool命令
    Oracle循环语句
    替换变量&和&&
    OCP-052 & 053部分答案解析
    Oracle IF & CASE语句
    PL/SQL概念
    AIX下如何根据端口号查找相应的进程
    (转)Tomcat启动报Error listenerStart错误
    Suse碎碎念
  • 原文地址:https://www.cnblogs.com/ljsong/p/8692757.html
Copyright © 2011-2022 走看看