msh-multi-storage
v0.0.1
Published
支持内存,Redis等多种形式的存储器,可以用来作为缓存,支持多级缓存
Maintainers
Readme
Multi-Storage
支持多个存取器的缓存系统,一个使用包括内存,Redis在内的多种存储方案作为一个缓存系统.支持内存缓存和Redis缓存,提供灵活的存储策略和发布订阅功能。
特性
- 多级缓存策略,支持内存、Redis等多种存储方式
- 支持TTL(过期时间)设置
- 提供发布订阅功能
- 支持多种Redis客户端实现(node-redis和ioredis)
- 完全使用TypeScript编写,提供完整类型定义
- 模块化设计,易于扩展
安装
npm install msh-multi-storage
# 或者使用yarn
yarn add msh-multi-storage
# 或者使用pnpm
pnpm add msh-multi-storage基本用法
创建简单的内存缓存
import { MemoryStorage } from 'msh-multi-storage';
async function example() {
const storage = new MemoryStorage();
// 设置缓存
await storage.set('key1', 'value1');
// 获取缓存
const value = await storage.get('key1');
console.log(value); // 输出: value1
// 设置带过期时间的缓存(单位:秒)
await storage.set('key2', 'value2', 60); // 60秒后过期
// 检查键是否存在
const exists = await storage.has('key1');
console.log(exists); // 输出: true
// 删除缓存
await storage.del('key1');
// 清空所有缓存
await storage.clear();
}使用多级缓存
import { MultiLevelStorageProvider, NodeCacheStorage, NodeRedisStorage } from 'msh-multi-storage';
async function example() {
// 创建多级缓存提供者
const provider = new MultiLevelStorageProvider(NodeCacheStorage);
// 添加Redis作为第二级缓存
provider.addLevel(NodeRedisStorage, {
host: 'localhost',
port: 6379
});
// 获取主存储实例
const storage = provider.getStore();
// 设置缓存(会自动同步到所有级别)
await storage.set('user:1', { id: 1, name: 'John' });
// 获取缓存(会按顺序查找各级缓存)
const user = await storage.get('user:1');
console.log(user); // 输出: { id: 1, name: 'John' }
}使用发布订阅功能
import { IORedisPubsubStorage } from 'msh-multi-storage';
async function example() {
const pubsub = new IORedisPubsubStorage({
host: 'localhost',
port: 6379
});
// 订阅频道
await pubsub.subscribe('news', (message) => {
console.log('收到消息:', message);
});
// 发布消息
await pubsub.publish('news', '这是一条新闻消息');
// 取消订阅
await pubsub.unsubscribe('news');
// 关闭连接
await pubsub.close();
}示例代码
项目包含多个示例代码,展示了不同功能的使用方法:
- 多级存储示例 - 展示如何使用多级缓存
- 内存存储示例 - 展示内存存储的基本用法
- IORedis存储示例 - 展示如何使用IORedis存储
- IORedis发布订阅示例 - 展示IORedis的发布订阅功能
- NodeRedis存储示例 - 展示如何使用NodeRedis存储
- NodeRedis发布订阅示例 - 展示NodeRedis的发布订阅功能
- NodeCache存储示例 - 展示如何使用NodeCache存储
- 存储提供者示例 - 展示如何使用存储提供者
单元测试
项目包含完整的单元测试,可以参考这些测试来了解各个组件的用法:
存储测试
提供者测试
API参考
完整的API文档可以在以下位置找到:
- API文档 - HTML格式的API文档
- Markdown API文档 - Markdown格式的API文档
主要接口
IStorage- 基础存储接口,定义了缓存存储的基本操作IRemoteStorage- 远程存储接口,扩展基础存储接口,添加连接管理功能IPubSub- 发布订阅接口,定义了发布订阅的基本操作IRemotePubSubStorage- 远程发布订阅存储接口,结合远程存储和发布订阅功能
主要实现类
MemoryStorage- 内存存储实现MemoryPubsubStorage- 内存发布订阅存储实现NodeCacheStorage- 基于node-cache的存储实现NodeRedisStorage- 基于node-redis的远程存储实现NodeRedisPubsubStorage- 基于node-redis的发布订阅存储实现IORedisStorage- 基于ioredis的远程存储实现IORedisPubsubStorage- 基于ioredis的发布订阅存储实现
提供者类
StorageProvider- 基础存储提供者PubsubStorageProvider- 发布订阅存储提供者MultiLevelStorageProvider- 多级存储提供者
许可证
MIT
