当前位置: 首页 > 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.lqws.cn/news/458533.html

相关文章:

  • 党建赋能 医校协同|广州附医华南医院与湖南中医药高等专科学校签约携手共育英才
  • Unity3D仿星露谷物语开发67之创建新的NPC
  • HTTP Server
  • 基于RISV-V的矿业网关,支持矿鸿等国产系统
  • 树莓派倾斜传感器实验指导书
  • 为什么你的vue项目连接不到后端
  • Linux 内核同步管理全解:原理 + 实战 + 考点
  • 【服务器R环境架构】基于 micromamba下载 R 库包
  • 企业实践 | 银河麒麟KylinOS-V10(SP3)高级服务器操作系统基础安装指南
  • 无人机吊舱热成像伪彩模式设计分析
  • Hadoop 技术生态体系
  • 如何填写“appium inspector”内容?
  • RAG工程落地:处理文档中表格数据
  • “地标界爱马仕”再启:世酒中菜联袂陈汇堂共筑新会陈皮顶奢产业
  • @annotation:Spring AOP 的“精准定位器“
  • 【MySQL数据库 | 第八篇】DQL语句 - 基础/条件查询
  • 20250620在荣品的PRO-RK3566开发板的Android13系统的uboot阶段就拉高GPIO2C6【driver模式】
  • 分布式ID生成利器:Snowflake UUID原理解析与实践
  • Lua 事务双写、RedisGears 异步双写、零停机索引迁移与容量预估
  • 数据结构第八章(六)-置换选择排序和最佳归并树
  • qt集成openssl
  • 大白话说目标检测中的IOU(Intersection over Union)
  • 数据结构-顺序表-数值统计
  • 「Linux文件及目录管理」硬链接与软连接
  • 学习笔记丨AR≠VR:透视沉浸式技术的“虚实象限”法则
  • c++系列之特殊类的设计
  • 在 macOS 上部署 Akash Network 的完整 Shell 脚本解决方案
  • GM DC Monitor v2.0 卸载教程
  • macOS - 安装微软雅黑字体
  • 湖北师范大学人工智能与计算机学院电子信息研究生课程《随机过程》第二次作业