革命性Redis客户端node-redis现代高性能Node.js开发新范式【免费下载链接】node-redisRedis Node.js client项目地址: https://gitcode.com/gh_mirrors/no/node-redisnode-redis是一款现代高性能的Redis Node.js客户端为开发者提供了与Redis数据库交互的高效解决方案。无论是构建实时应用、处理缓存数据还是实现分布式系统node-redis都能以其卓越的性能和丰富的功能成为Node.js开发中的得力助手。快速上手5分钟安装与基础使用 要开始使用node-redis首先需要安装Redis服务。通过Docker可以快速启动一个Redis实例docker run -p 6379:6379 -d redis:8.0-rc1接着安装node-redis包npm install redis完成安装后即可在项目中引入并创建客户端连接import { createClient } from redis; const client await createClient() .on(error, (err) console.log(Redis Client Error, err)) .connect(); await client.set(key, value); const value await client.get(key); client.destroy();以上代码实现了最基本的Redis键值对存储与读取操作。默认情况下客户端连接本地的Redis服务localhost:6379。如需连接远程服务器或使用认证可以通过URL字符串或配置对象进行设置createClient({ url: redis://alice:foobaredawesome.redis.server:6380, });详细的配置选项可参考client-configuration.md。核心优势为何选择node-redis全面支持Redis命令node-redis内置了对所有Redis原生命令的支持既可以使用原始命令名称如HSET、HGETALL也可以使用更友好的驼峰式命名如hSet、hGetAll// 原始Redis命令 await client.HSET(key, field, value); await client.HGETALL(key); // 友好的JavaScript命令 await client.hSet(key, field, value); await client.hGetAll(key);命令修饰符通过JavaScript对象指定例如设置过期时间和条件await client.set(key, value, { EX: 10, // 10秒后过期 NX: true // 键不存在时才设置 });模块化架构与丰富功能包node-redis采用模块化设计提供了多个专用功能包满足不同场景需求包名描述redis/client基础客户端如RedisClient、RedisCluster等redis/bloomRedis Bloom概率数据类型命令redis/jsonRedis JSON数据类型命令redis/searchRediSearch搜索查询命令redis/time-seriesRedis Time-Series时间序列命令redis/entraid使用Microsoft Entra ID的安全令牌认证例如使用redis/json包处理JSON数据import { createClient } from redis; import { jsonSet, jsonGet } from redis/json; const client await createClient().connect(); await jsonSet(client, user:1, $, { name: John Doe, age: 30 }); const user await jsonGet(client, user:1, $);完整示例可参考examples/managing-json.js。高性能与自动流水线node-redis在内部实现了自动流水线功能能够将同一tick内发出的多个请求合并发送显著提升吞吐量// 自动流水线处理 await Promise.all([ client.set(key1, value1), client.sAdd(set1, member1), client.hSet(hash1, field1, value1) ]);客户端缓存与智能数据处理node-redis v5引入了客户端缓存支持结合Redis的服务器通知机制实现本地缓存的自动失效const client createClient({ RESP: 3, clientSideCache: { ttl: 3600, // 缓存过期时间秒 maxEntries: 1000, // 最大缓存条目数 evictPolicy: LRU // 缓存淘汰策略 } });对于大型数据还支持基于XXH3 64位哈希的Compare-and-Set/Delete (CAS/CAD)操作提高处理效率import { digest } from redis; const hash await digest(large-value); await client.set(key, new-value, { condition: IFDEQ, matchValue: hash });高级特性解锁Redis全部潜力事务与乐观锁通过.multi()和.exec()方法支持Redis事务确保一系列命令的原子性执行const [setReply, getReply] await client .multi() .set(key, value) .get(another-key) .exec(); // [OK, another-value]结合.watch()方法实现乐观锁监控关键数据的变化await client.watch(key); // 执行事务操作...集群与哨兵支持node-redis提供了对Redis集群和哨兵的原生支持确保高可用性和可扩展性。连接Redis集群的示例import { createCluster } from redis; const cluster createCluster({ rootNodes: [ { url: redis://10.0.0.1:6379 }, { url: redis://10.0.0.2:6379 } ] }); await cluster.connect();详细配置可参考clustering.md和sentinel.md。发布/订阅系统利用Redis的Pub/Sub功能实现消息发布与订阅// 订阅者 const subscriber client.duplicate(); await subscriber.connect(); await subscriber.subscribe(news, (message) { console.log(Received message:, message); }); // 发布者 await client.publish(news, Hello, Redis Pub/Sub!);完整使用指南见pub-sub.md。扫描迭代器通过异步迭代器轻松处理SCAN、HSCAN等命令的分页结果// 遍历所有键 for await (const keys of client.scanIterator()) { console.log(keys); } // 遍历哈希字段 for await (const { field, value } of client.hScanIterator(hash-key)) { console.log(field, value); }监控与可观测性OpenTelemetry集成node-redis支持OpenTelemetry指标收集帮助监控应用性能import { createClient, OpenTelemetry } from redis; OpenTelemetry.init({ metrics: { enabled: true } }); const client createClient(); await client.connect();详细配置和示例见otel-metrics.md和examples/otel-metrics.js。诊断通道通过Node.js的diagnostics_channel发布内部事件便于APM工具进行性能分析和问题诊断import { diagnosticsChannel } from node:diagnostics_channel; diagnosticsChannel.subscribe(redis.command.start, (message) { console.log(Command ${message.command} started); });更多信息请参考diagnostics-channel.md。学习资源与社区支持官方文档项目提供了丰富的文档包括FAQ.md、transactions.md等示例代码examples/目录包含了各种使用场景的代码示例迁移指南从旧版本升级的详细说明如v3-to-v4.md和v4-to-v5.md社区交流可通过Discord、Twitter等渠道获取支持和最新动态总结node-redis作为一款现代化的Redis客户端以其全面的功能、卓越的性能和友好的API为Node.js开发者提供了与Redis数据库交互的理想选择。无论是简单的缓存需求还是复杂的分布式系统node-redis都能提供可靠高效的支持助力开发者构建更优秀的应用。要开始使用node-redis只需通过以下命令克隆仓库git clone https://gitcode.com/gh_mirrors/no/node-redis立即体验这款革命性的Redis客户端开启高性能Node.js开发新范式【免费下载链接】node-redisRedis Node.js client项目地址: https://gitcode.com/gh_mirrors/no/node-redis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考