a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

Mongodb設(shè)置TTL索引自動清除數(shù)據(jù)與過期數(shù)據(jù)的方法

2020-10-29 18:42:06
字體:
供稿:網(wǎng)友

Mongodb通常會被用來存儲緩存數(shù)據(jù)或大尺寸、低價值的數(shù)據(jù),對于這些類型的數(shù)據(jù),數(shù)據(jù)量往往非常大,如果不定期清理,不但會影響性能,也會浪費大量的系統(tǒng)資源。

Mongodb其實可以像Redis一樣設(shè)置數(shù)據(jù)的過期時間,TTL索引是MongoDB中一種特殊的索引,可以支持文檔在一定時間之后自動過期刪除,目前TTL索引只能在單字段上建立。

當(dāng)你在集合中某一個字段建立TTL索引后,后臺會有一個單線程,通過不斷查詢(默認(rèn)60s一次)索引的值來判斷document是否有過期,并且刪除文檔的動作還依據(jù)mongod實例的負(fù)載情況,如果負(fù)載很高,可能會稍微延后一段時間再刪除。

創(chuàng)建TTL索引方法:

和普通索引的創(chuàng)建方法一樣,只是會多加一個屬性而已

例:在log_events的集合中,createTime 字段上建立一小時后過期的TTL索引

db.log_events.createIndex( { "createTime": 1 },   ---字段名稱    { expireAfterSeconds: 60*60 } )         ---過期時間(單位秒)

上例中creteTime字段類型必須是Date()類型

修改TTL索引的expireAfterSeconds屬性值:

注:如果想更改過期時間expireAfterSeconds,可以使用collMod方法,要不然你只能只用dropIndex(),createIndex()方法重建索引了,但這樣的方法在億級數(shù)據(jù)量下是很頭疼的

db.runCommand({ collMod: "log_events",     ---集合名   index: { keyPattern: { createTime: 1 },   ---createTime為具有TTL索引的字段名   expireAfterSeconds: 7200          ---修改后的過期時間(秒)   }})

雖然上面的方法可以實現(xiàn)自動過期刪除,但是如果白天業(yè)務(wù)很忙,頻繁的刪除數(shù)據(jù)勢必會增加負(fù)載,所以我想著晚上定時刪除過期數(shù)據(jù)(如果晚上業(yè)務(wù)量少的話)

方法如下:

增加一個expireTime字段(用于指定過期時間),expireAfterSeconds屬性值設(shè)置為0,

注:上面的createTime字段就不需要再有TTL索引了,這個expireTime的時間就需要在插入時指定上

db.log_events.createIndex( { "expireTime": 1 },   ---字段名稱   { expireAfterSeconds: 0 } )           ---過期時間(單位秒)db.log_events.insert( {  "expireTime": new Date('Jan 22, 2019 23:00:00'), ---插入文檔時指定自動刪除時間  "logEvent": 2,  "logMessage": "Success!"} ) 

使用spring-data-mongodb 2.0.9中的

Document document = new Document();document.append("createTime",1);IndexOptions indexOptions = new IndexOptions();indexOptions.expireAfter(300L,TimeUnit.SECONDS);this.mongoTemplate.getCollection("test").createIndex(document,indexOptions);

createTime是時間字段

使用spring-data-mongodb 1.7.0中的

BasicDBObject bson = new BasicDBObject();      bson.append("createTime",1);BasicDBObject options = new BasicDBObject();options.append("expireAfterSeconds",7200);      this.mongoTemplate.getCollection("test").createIndex(bson,options);

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對武林網(wǎng)的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 五月婷婷免费视频 | 日韩成人高清电影 | 国产痴汉av久久精品 | 日韩不卡在线 | 欧美黑人做爰xxxⅹ 日韩成人免费视频 | 免费黄色片一区二区 | 欧美一级在线免费观看 | 日韩aaa久久蜜桃av | 久在线 | 69久久99精品久久久久婷婷 | 亚洲三区在线观看 | 哪里有免费的黄色网址 | 亚洲国产成人久久综合一区,久久久国产99 | 日韩欧美视频一区 | 六月色婷婷 | 亚洲精品视频在线观看免费视频 | 国产乱码精品一品二品 | 色性网| 不卡在线视频 | 国产在线视频一区 | 天天狠天天天天透在线 | 国产精品日韩 | 羞羞在线观看视频免费观看hd | 午夜一区二区三区在线观看 | 免费在线看a | 爽爽淫人网 | 久久国产精品毛片 | a级在线观看免费 | 成人一级| 天天干狠狠干 | 精品国产乱码久久久久久闺蜜 | 成人一区二区在线 | 国产精品一区在线观看 | 四虎成人精品 | 欧美一性一交 | 免费特级黄毛片 | 久久精品亚洲欧美日韩精品中文字幕 | www.日韩精品| 亚洲一区二区精品视频 | 激情三区| 一区在线观看视频 |