简介
@lennon/ttl-cache
是一个基于 Node.js 的内存缓存模块,支持设置过期时间,能够根据缓存键自动销毁过期的缓存,支持事件监听和自定义序列化函数。
安装
npm install @lennon/ttl-cache
使用
初始化
-- -------------------- ---- ------- ----- -------- - ----------------------------- ----- ------- - - --------- ----- -- ---- ---- ----- -- -------- ----------- --------------- -- ----- ------------- ----------- -- ------ -- ----- ----- - --- ------------------
缓存数据
cache.set('key', 'value');
获取缓存
console.log(cache.get('key')); // Output: value
检查缓存是否存在
console.log(cache.has('key')); // Output: true
删除缓存
cache.delete('key');
清空缓存
cache.clear();
事件监听
@lennon/ttl-cache
支持以下事件:
set(key, value, ttl)
:当缓存被设置时触发get(key, value)
:当从缓存获取值时触发expire(key, value)
:当缓存过期并被删除时触发delete(key, value)
:从缓存删除数据时发生
如下示例代码:
-- -------------------- ---- ------- --------------- ----- ------ ---- -- - ----------------- ------ ------ -------- ---- --------- --- --------------- ----- ------ -- - ----------------- ------ ------ ----------- --- ------------------ ----- ------ -- - ----------------- ------ ------ -------- ---------- --- ------------------ ----- ------ -- - ----------------- ------ ------ -------- ---------- ---
自定义序列化函数
默认情况下,@lennon/ttl-cache
会使用 JSON.parse
和 JSON.stringify
进行缓存数据的序列化和反序列化。但如果需要使用自定义的序列化函数,可以在初始化时将其传入 serializer
和 deserializer
参数中:
const options = { serializer: (data) => data.toString(), deserializer: (data) => Number(data), }; const cache = new TTLCache(options);
案例
@lennon/ttl-cache
可以应用于对访问量大的 API 接口进行缓存。以请求 GitHub API 的 GET /users/:username
为例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----- - ----------------- ----- -------- - ----------------------------- ----- --- - ---------- ----- ----- - --- ---------- --------- ----- ---- -- - -- - ----- -- ----- --- ----- -------- --------------------------- - ----- --- - ------------------------------------------- ----- -------- - ----- --------------- ------ -------------- - -------------------------- ----- ----- ---- -- - ----- - -------- - - ----------- ----- -------- - -------------------------- -- --------------------- - ------------------------------ - ---- - ----- ---- - ----- ---------------------------- --------------- ------------------- ------ - --- ---------------- -- -- - ------------------- -- ------- -- ---- ------- ---
上述代码会缓存从 GitHub API 返回的用户数据一小时,在用户多次请求同一个用户名时可以有效减少 API 请求次数,提高系统性能。
总结
@lennon/ttl-cache
是一个简单易用、功能强大的 Node.js 内存缓存模块,支持设置过期时间、事件监听和自定义序列化函数,在实际生产环境中可以用于各种数据缓存的场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bc7967216659e244563