Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

timechain

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

timechain

时间队列链式触发器

  • 1.1.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

基于链式事件触发策略,使用单个setTimeout处理过期时间队列

Install

npm install timechain

示例

let timeChain = require('timechain')

let timechain = new timeChain({ timeout: 3000 })

// 对象示例
timechain.set('name', 666)

setTimeout(() => {

   timechain.get('name')

}, 2000);

// 函数示例
timechain.set(function (value) {
   console.log(value)
}, 888)

应用场景

  • 等待超时回调,例如网络请求超时

  • 变量过期删除,例如验证码、优惠券过期

  • 计划任务定时器

过期策略

每种过期策略都有其优势和劣势,timechain目前采用的是定时删除策略。计划同时支持多种过期策略,针对不同的数据类型选用最佳的过期策略。

对于函数类型,只能使用定时策略,非函数类型则使用惰性策略 + 定期策略(借鉴于Redis)。

定时删除

为每个资源创建定时器,在设置变量时激活定时器,仅在队列为空时触发,避免创建多个setTimeout。

定时删除可以通过一些优化策略来控制定时器的使用频率,如基于链式策略使同一个时间点只存在一个定时器,或基于公差进一步减少对定时器的使用。

  • 优点:高时效,主动触发,可及时释放超时的资源,减少内存占用,支持超时回调函数。

  • 缺点:会创建多个定时器,但通过链式策略,可以减少多个定时器同时存在的数量。

惰性删除

在查询时检查变量是否过期,过期则删除,否则继续保留。

  • 优点:删除操作只在真正需要获取数据时发生,最大限度减少了额外的处理开销。

  • 缺点:被动执行,如果key没有被获取则会产生积压,资源始终得不到释放,导致内存泄漏或溢出的悲剧

  • 应用场景:适用于key/value的存取,必须搭配定期删除,否则产生现内存泄漏。

定期删除

使用固定时间周期,每隔一段时间批量删除已过期的key

  • 优点:简单,效率折中,可以灵活控制删除周期。

  • 缺点: 存在矩形周期特征,时间偏差严重。

API

new timeChain(options)
  • options Object 公共选项

    • timeout Number 默认超时
this.set(key, value, timeout)
  • key * 保存key,允许任意值

  • value * 保存value,允许任意值

  • timeout Number 单项超时

设置存储数据的key、value

this.get(key)
  • key * 查询key

通过key获取数据

this.delete(key)
  • key * 删除key

通过key删除数据

this.clear()

清空整个数据队列

FAQs

Package last updated on 28 Aug 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc