npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

cache-redis-lib

v0.2.15

Published

缓存组件

Downloads

1

Readme

连接 Redis

config/config.js 存储配置

install

npm install cache-redis-lib --save

从 0.1 升级到 0.2 需要检查兼容性

import

var cache = require('cache-redis-lib')

usage

//
// 创建一个连接, 断开后自动重新连接, 在成功连接之前, 其他方法会异常
// ext_conf -- 提供一个配置覆盖默认配置
//
var client = cache.createClient(ext_conf);

//
// 关闭连接, 关闭后会发出 `quit` 消息
//
client.end();

//
// 创建一条与当前配置相同的独立连接
// 不支持 stream 模式.
//
var c2 = client.createClient();

//
// 取得 key 的值, 返回字符串, 成功调用 getter, 失败调用 err_handle
// getter: Function(data)
// err_handle: Function(err)
//
client.get(key, getter, err_handle);

//
// 设置 key 的值为 value, 完成调用 set_over
// set_over: Function()
//
client.set(key, value, set_over, err_handle);

//
// 允许使用模糊查询所有符合的 key, 返回key 的列表
//
client.keys(key, getter, err_handle);

//
// 返回的数据解析为 JS 对象
//
client.getJSON(key, getter, err_handle);

//
// 设置 key 为 JS 对象
//
client.setJSON(key, value, set_over, err_handle)

//
// 删除 key
//
client.remove(key, set_over, err_handle)

//
// 切换数据库
//
client.db(dbname, set_over, err_handle)

消息队列

可以使用 pop/push 命令实现消息队列, 或使用封装好的方法,
因为错误的顺序调用 pop/push 会导致客户端锁住.

队列式订阅

若一个队列有多个订阅者, 消息只会被唯一且等待时间最长的客户端接收, 即使队列没有订阅者, 消息会进行排队, 直到被下一个客户端接收.

//
// 向 fifo 队列发送一个消息
//
client.fsend(queue_name, value, fn);

//
// 订阅一个消息队列, 一旦有消息则 fn 被调用,
// 直到本次调用的 fn 返回, 下一条消息才会继续发送.
// 一旦进入订阅模式, 其他命令不可用, 应该创建一个独立的客户端连接进行这个操作.
//
// fn -- function(err, value, name);
//
var handle = client.fsubscribe(queue_name, fn);

//
// 终止对消息的订阅, 句柄会被回收, 客户端被关闭
// 继续调用 handle 中的其他方法会导致异常
//
handle.end();

//
// 暂停接受队列消息, 该方法不会立即生效, 如果当前被阻塞
// 则在阻塞解除并收到一条消息后暂停
//
handle.pause();

//
// 恢复被暂停的消息, 如果消息并没有暂停/立即暂停, 则什么也不做
//
handle.start();

频道式订阅,

若一个队列有多个订阅者, 这些订阅者会同时接受到这一频道的消息.
如果这个频道没有订阅者, 发送的消息都会丢失. 这些函数会在内部创建另一个 redis 连接, 当前连接并不会受到影响, 仍然可以使用其他的命令.

//
// 向频道发送消息
// fn -- function(err)
//
client.tsend(channel, msg, fn);

//
// 返回频道的订阅数量, 一旦进入订阅模式, 其他命令不可用.
// 应该创建一个独立的客户端连接进行这个操作.
// fn -- function(err, count);
//
client.tsubcount(channel, fn);

//
// 订阅频道
// fn -- function(err, msg, channel);
//
var handle = client.tsubscribe(channel, fn);

//
// 终止订阅, 继续调用 handle 中的其他方法会导致异常
//
handle.end();

//
// 返回当前频道的订阅数量
// fn -- function(err, count);
//
handle.count(fn);

//
// 暂停接受频道消息, 立即生效
//
handle.pause();

//
// 恢复被暂停的消息, 如果消息并没有暂停, 则什么也不做
//
handle.start();

//
// 模式订阅, 定义与之前相同
//
client.tpsubcount(...)
client.tpsubscribe(...)