当前位置: 首页 > news >正文

1.22Node.js 中操作 Redis

redis操作.详见 18.redis基本操作-CSDN博客

在 Node.js 中操作 Redis,通常使用 redis 这个 npm 包。

首先,你需要安装 redis 包。可以通过 npm 来安装:

npm install redis

基本使用

创建客户端

要开始与 Redis 交互,需要先创建一个客户端实例:

const redis = require('redis');
const client = redis.createClient();client.on('connect', () => {console.log('Connected to Redis');
});

默认情况下,createClient() 将尝试连接到运行在 127.0.0.1:6379 的 Redis 服务器。如果你的 Redis 服务器位于不同的主机或端口上,你可以传递相应的选项给 createClient() 方法。

设置和获取键值对
client.set('key', 'value', (err, reply) => {if (err) throw err;console.log(reply); // 输出 "OK"
});

获取键对应的值:

client.get('key', (err, reply) => {if (err) throw err;console.log(reply); // 输出 "value"
});
关闭客户端

当你完成与 Redis 的交互后,可以关闭客户端连接:

client.quit();

异步/等待支持

从某些版本开始,redis 包提供了对异步/等待的支持,这使得代码更易于阅读和编写。例如:

async function example() {await client.connect();const value = await client.set('key', 'value');console.log(value);const getValue = await client.get('key');console.log(getValue);
}

请注意,对于较新的版本(如 v4 及以上),redis 包引入了一些重大的变化,包括对 Promises 和 async/await 的原生支持。

五大数据结构实战

1. 字符串(String)
// 设置值(过期时间 60 秒)
await redis.set('user:1', JSON.stringify({ name: 'Alice', age: 30 }), 'EX', 60);// 获取值
const user = JSON.parse(await redis.get('user:1'));// 原子操作:计数器
await redis.incr('page_views'); // 自增 1
await redis.incrby('page_views', 5); // 自增 5
2. 哈希(Hash)
// 设置哈希字段
await redis.hset('user:2', 'name', 'Bob', 'age', 25);// 获取单个字段
const name = await redis.hget('user:2', 'name');// 获取所有字段
const user2 = await redis.hgetall('user:2'); // 返回 { name: 'Bob', age: '25' }
3. 列表(List)
// 左插入
await redis.lpush('tasks', 'task1', 'task2');// 右弹出(阻塞模式,超时 10 秒)
const task = await redis.brpop('tasks', 10);
4. 集合(Set)
// 添加成员
await redis.sadd('tags:post1', 'js', 'node', 'redis');// 获取所有成员
const tags = await redis.smembers('tags:post1');// 判断成员是否存在
const hasTag = await redis.sismember('tags:post1', 'js');

5. 有序集合(Sorted Set)

// 添加成员(分数表示热度)
await redis.zadd('trending_articles', 100, 'article1', 200, 'article2');// 获取热度最高的 10 篇文章
const topArticles = await redis.zrevrange('trending_articles', 0, 9, 'WITHSCORES');

 

错误处理

不要忘记为你的 Redis 客户端添加错误处理程序:

client.on('error', (err) => {console.error('Redis error:', err);
});

这将确保你能够捕获并处理任何可能出现的问题。

http://www.lryc.cn/news/572602.html

相关文章:

  • Kafka线上集群部署方案:从环境选型到资源规划思考
  • 源易信息:领先GEO供应商的市场布局与服务优势
  • 【生活点滴】车辆过户、新车挂牌
  • 变幻莫测:CoreData 中 Transformable 类型面面俱到(五)
  • 学习华为 ensp 的学习心得体会
  • 百胜软件荣膺零售商业评论“《2024创新零售》优秀服务商TOP”奖项
  • 学习华为 ensp 的学习心得体会(适合新手)
  • Python 数据分析与可视化 Day 2 - 数据清洗基础
  • 如何轻松将照片从 iPhone 传输到 Android?
  • 从“数据困境”到“数据生态”:DaaS重塑三甲医院医疗数据治理
  • 【RTSP从零实践】2、使用RTP协议封装并传输H264
  • 基于Gold-YOLO的聚合-分发机制改进YOLOv8教程
  • 电影感户外柔和光线人像街拍摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 【世纪龙科技】智能网联汽车装调仿真教学软件数智化赋能实训教学
  • 魅族“换血”出牌:手机基本盘站不稳,想靠AI和汽车“改命”
  • Servlet容器(Web容器)简介
  • Windows + R组合键常用命令
  • Qi无线充电:车载充电的便捷与安全之选
  • 大数据系统架构实践(一):Zookeeper集群部署
  • 分布式系统中的 Kafka:流量削峰与异步解耦(二)
  • Unity3d中使用Mirror进行自定义消息通信
  • 磐基PaaS平台MongoDB组件SSPL许可证风险与合规性分析(下)
  • 设计模式精讲 Day 8:组合模式(Composite Pattern)
  • Git——分布式版本控制工具
  • 深度学习N5周:Pytorch文本分类入门
  • android 渲染流水线中的两个重要阶段:swapBuffers 和 DrawFrames
  • 【Oracle专栏】ORA-04036 报错 PGA设置
  • Android开发常用adb合集
  • 医疗AI大数据处理流程的全面解析:从数据源到应用实践
  • SSE 流与普通 HTTP 响应的区别