通常,你往某乙個mongo庫中插資料,然後按日輪詢,最終這個資料會越來越多,對於不用的資料需要進行清理。這篇文章主要將如何清理過期資料。
舉個例子:你只需要最近2個月的資料,比如今天是20170829,那麼60天之前的資料都可以清理掉。你可以寫乙個crontab任務,然後匯入指令碼,每天執行一次,將60天之前的所有資料進行刪除。
假如你的collections為如下形式: test20170836
**如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""指令碼:刪除過期的資料
"""import pymongo
from datetime import datetime, timedelta
col_pre = "test"
g_config_type = "online"
config =
}config_online =
}# mongoclient
def get_mongo_db():
if g_config_type == "online":
config_type = config_online
else:
config_type = config
return mongo_db
def del_data(live_date):
"""過期資料清理 刪除2個月前的資料 每天乙個集合
"""mongodb = get_mongo_db()
col_online = col_online_pre + live_date
for collection in mongodb.collection_names():
if str(collection).find("test20") != -1 and len(str(collection)) == len("test20161209") and str(collection) <= col_online:
delonline_flag = mongodb[collection].drop()
print 'del %s status:%s .' % (collection, delonline_flag)
if __name__ == "__main__":
now = datetime.now()
days = 60
twomonthago = now - timedelta(days=days)
livedate = twomonthago.strftime("%y%m%d")
del_data(livedate)
MongoDB自動刪除過期資料 TTL索引
ttl索引是一些特殊的索引,mongodb可以在一段時間後使用它自動從集合中刪除文件。這對於某些型別的資訊比如機器生成的事件資料,日誌和會話資訊是合適的,因為這些資訊只需要在有限的時間內保留在資料庫中。官方文件 目前ttl索引只能在單字段上建立,並且字段型別必須是date型別或者包含有date型別的...
elasticsearch清除過期資料
版本 elasticsearch 7.3.2 指令碼內容如下 root access server elasticsearch 7.3.2 cat clear data.py coding utf 8 import requests import json es host 127.0.0.1 ela...
Redis過期資料和刪除策略
因為記憶體有限,有些資料不需要一直在記憶體中,可以設定一些規則,將一些資料設定過期,在記憶體中刪除,當然也不是隨便刪除,也要考慮到cpu的繁忙與空閒,以免出現redis各種命令執行很多,但是正好出現大量過期資料,已造成伺服器宕機 是在記憶體占用與cpu占用之間尋找一種平衡,顧此失彼都會造成redis...