zoukankan      html  css  js  c++  java
  • 一个设置过期时间的方案

    一般设置过期时间,是可以使用一个定时器不停的删除过期的数据。
    但是这样就存在一个不准确的问题,因为定时器的时间不能设置的太短,否则就太消耗资源了。
    但是如果在数据中加上过期时间,在数据被请求的时候跟当前的时间对比,如果数据过期,再返回数据过期(同时还可以删掉数据),而不是找不到数据才说数据过期,这样也是可以的。
    同时可以再加上一个时间较长的定时器,用来处理已经过期而没有被请求到的数据,这样就完善了。
    代码
    // 一个临时数据存放方案
    let storeSymbol = Symbol('store');
    class Storage {
    constructor(createFunc = () => { }, deleteFunc = () => { }) {
    this[storeSymbol] = {};
    this.createFunc = createFunc;
    this.deleteFunc = deleteFunc;
    this.dataCleaner = setInterval(() => {
    for (let key of this[storeSymbol]) {
    let time = JSON.parse(this[storeSymbol][key]).time;
    if (time < Date.now()) {
    this[storeSymbol][key] = null;
    }
    }
    }, 1000 * 60);
    }
    setItem(key, val, time) {
    let value = JSON.stringify({ val, time });
    this[storeSymbol][key] = value;
    this.createFunc(key, val, time);
    }
    getItem(key) {
    let value = JSON.parse(this[storeSymbol][key]);
    if (value.time < Date.now()) {
    this.deleteFunc(key);
    delete this[storeSymbol][key];
    return null;
    }
    return value.val;
    }
    }
    let store = new Storage();
    store.setItem('12', 'hhh', Date.now() + 1000);
    console.log(store.getItem('12'));
    // console.log(store);
    setTimeout(() => {
    console.log(store.getItem('12'));
    // console.log(store);
    }, 1020);
  • 相关阅读:
    入栈的方式
    出栈的方式
    入栈的方式
    累加数据段中的前3个字型数据
    累加数据段中的前3个字型数据
    出栈的方式
    入栈的方式
    python中如何清空列表
    python中统计列表元素出现的次数
    python中删除列表元素
  • 原文地址:https://www.cnblogs.com/lswit/p/8865712.html
Copyright © 2011-2022 走看看