一个简单封装的的nodejs缓存对象

embedded/2024/12/28 22:50:33/

我们在日常编码中,经常会用到缓存,而一个有效的缓存管理,也是大家必不可少的工具。而nodejs没有内置专用的缓存对象,并且由于js的作用域链的原因,很多变量使用起来容易出错,如果用一个通用的缓存管理起来,会方便很多,于是就手写了一个简单的nodejs缓存对象,并且可以指定变量保存时间。代码如下:

exports.cache = (function(){function MyCatch(isClear){var __cache = {};var __clearable = !!isClear;this.set = function(name, value, expireTime){            __cache['key_' + name] = {expire: expireTime || 36000000, // 默认有效时间10小时, 36000000expTime: (new Date()).getTime() + (expireTime || 36000000),data: value};}this.get = function(name) {var che = __cache['key_' + name];if(che && __clearable){var now = (new Date()).getTime();if(che.expTime < now ){delete __cache['key_' + name];che = null;}else{che.expTime = now + che.expire;}}return che}this.del = function(name) {delete __cache['key_' + name];}}return new MyCatch(true);
})();

这个版本的缓存对象,是在用户取对象时,判断是否过期并消除过期对象。还有一个版本,采用setInterval方法自动消除过期对象,代码如下:

exports.cache = (function(){function MyCatch(isClear){var __cache = {};this.set = function(name, value, expireTime){__cache[name] = {expire: expireTime || 900000, // 默认有效时间15分钟, 900000毫秒expTime: parseInt((new Date()).getTime() / 1000, 10) + (expireTime || 900000),data: value};}this.get = function(name) {var cache_value = __cache[name];__cache[name] && (cache_value.expTime = parseInt((new Date()).getTime() / 1000, 10) + cache_value.expire);return cache_value}this.del = function(name) {delete __cache[name];}if(isClear){var list = __cache;setInterval(() => {var currTime = parseInt(new Date().getTime / 1000, 10);for(var key in list){var che = list[key];// if(che.expTime == 0){continue;}if(che.expTime < currTime ){delete __cache[key];}}}, 10000);}}return new MyCatch(true);
})();

两种方法各有优缺点,大家可以根据个人喜好选择使用,或根据自己意愿修改。


http://www.ppmy.cn/embedded/149578.html

相关文章

开源赋能未来:2024年开源创新榜单重大科技成就发布会

非常荣幸受邀参加了 2024年开源创新榜单重大科技成就发布会&#xff08;开源专场活动&#xff09;&#xff0c;让我对中国开源生态的快速发展和开源技术在各个领域中的应用有了一些新的认识。这场活动展示了国内在开源领域的部分最新成果&#xff0c;让我切实感受到开源精神对技…

SQL中的TRIM用法

TRIM 是 SQL 中用于去除字符串两端&#xff08;左侧和右侧&#xff09;的空格或特定字符的函数。这个函数常用于清理数据中的无效空白字符&#xff0c;尤其是在从外部系统导入数据时&#xff0c;常常会遇到数据两端有不必要的空格&#xff0c;使用 TRIM 可以去除这些多余的字符…

(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架

前提&#xff1a;建议先学过hadoop再看&#xff0c;涉及大量hadoop知识点 一、理论先知 1、Spark四种运行模式 1&#xff09;Local模式&#xff08;开发环境&#xff09; 用于开发和测试阶段&#xff0c;在单机节点上&#xff0c;一个Spark程序就只是一个进程&#xff0c;通过…

MongoDB数据库安全

MongoDB数据库安全 一、身份验证 内置身份验证机制 MongoDB支持多种身份验证方式。最常见的是基于用户名和密码的身份验证。在MongoDB中&#xff0c;可以通过创建用户并分配角色来控制对数据库的访问。例如&#xff0c;在mongo shell中&#xff0c;可以使用use admin切换到ad…

【WebSocket】tomcat内部处理websocket的过程

websocket请求格式 浏览器请求 GET /webfin/websocket/ HTTP/1.1。 Host: localhost。 Upgrade: websocket。 Connection: Upgrade。 Sec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg。 Origin: http://服务器地址。 Sec-WebSocket-Version: 13。 服务器响应 HTTP/1.1 101 Swi…

遇到duilib.dll丢失怎么办?解决duilib.dll文件丢失问题的全面指南

在使用计算机的过程中&#xff0c;您可能会遇到各种各样的错误提示&#xff0c;其中一种常见的问题是“duilib.dll丢失”。这类错误不仅会影响特定程序的正常运行&#xff0c;还可能给用户带来困扰。本文将详细介绍duilib.dll的作用、丢失的原因以及如何有效解决这一问题。 一、…

【从零开始入门unity游戏开发之——unity篇01】unity6基础入门开篇——游戏引擎是什么、主流的游戏引擎、为什么选择Unity

文章目录 前言**游戏引擎是什么&#xff1f;****游戏引擎对于我们的意义**1、**降低游戏开发的门槛**2、**提升游戏开发效率** **以前做游戏****现在做游戏****主流的游戏引擎有哪些&#xff1f;**Unity 相比其他游戏引擎的优势&#xff1f;**为什么选择Unity&#xff1f;**Uni…

人工智能与云计算的结合:如何释放数据的无限潜力?

引言&#xff1a;数据时代的契机 在当今数字化社会&#xff0c;数据已成为推动经济与技术发展的核心资源&#xff0c;被誉为“21世纪的石油”。从个人消费行为到企业运营决策&#xff0c;再到城市管理与国家治理&#xff0c;每个环节都在生成和积累海量数据。然而&#xff0c;数…