nodejs redis commands

NodeJS 5分钟 连接 Redis 读写操作 本文简介 本文主要讲解使用 NodeJS 操作 Redis ,顺便会先带一带 Redis 基础用法。 在写本文时,使用 NPM 安装的 Redis 依赖包已经到了 4.1.0 版本了。我以前用过 2.8 ,这两个版本在用法上也是有差别的。可能一些老项目还在用老版本的依赖包。所以我会把2个版本的用法都简单讲讲。 Redis 基础 Redis 可以说是最最最简单的数据库了。大部分数据库的读写操作都是在硬盘上的,而 Redis 是在内存上的。所以读写速度会比其他传统数据库要快。但缺点是数据不能持久化,一旦 阅读详情

Nodejs学习笔记(九)--- 与Redis的交互(mranney/node_redis)入门

目录

简介和安装

  • redis简介:
  1. 开源高性能key-value存储;采用内存中(in-memory)数据集的方式,也可以采用磁盘存储方式(前者性能高,但数据可能丢失,后者正好相反)
  2. 支持字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等;支持对复杂数据结构的高速操作。
  3. 特性多,支持主从同步、pub/sub等
  4. 支持多种客户端(http://redis.io/clients)
  5. ...

  注:应用场景没有提到,暂时没有太多实际体会,不瞎说,以免误导人,但是从它的简介和特性来说,起码缓存场景是不错的!

  Redis下载地址: https://github.com/dmajkic/redis/downloads  

  node.js客户端:node_redis https://github.com/mranney/node_redis/

  • redis安装(Windows平台)

   redis非常方便,直接下载解压就可以使用,因为开发环境是win7 64位,直接下载(示例下载的安装包:redis-2.4.5-win32-win64.zip)

  • redis运行

  解压到后运行"64bit"文件夹下的redis-server.exe即可,但是这样运行会出现一个如下警告提示:

  #Warning: no config file specified,using the default config. In order to specify a config file use ‘redis-server /path/to/redis.conf’

  提示也比较明显,没有明确的配置文件,使用的是默认配置,请使用‘redis-server /path/to/redis.conf’指定明确的配置文件

   根据提示运行redis成功(如下图)

  在redis-server.exe同级目录下可以看到一个redis.conf文件,这就是配置文件

  • node_redis安装
npm install redis
或者
npm install hiredis redis

  我这里采用 npm install hiredis redis 安装

  注:两种都可用,区别在于性能,hiredis是非阻塞的,而且速度更快;如果安装了hiredis,node_redis则会默认以它为解析器,没安装就会用纯javascript解释器,对于学习或者开发环境,用哪个都无所谓

redis.createClient()连接到redis服务器

  环境都准备好了,就开始写一代简单的代码测试用nodejs连接一下服务器

  示例源码

  从上图中可以看到运行结果,输出ready,表示成功!  

  对代码还是讲一下:

  redis.createClient():返回的是一个RedisClient的对象,大家可以输出来看一下此对象的具体信息。

  ready:Redis的Connection事件之一,当与redis服务器连接成功后会触发这个事件,此时表示已经准备好接收命令,当这个事件触发之前client命令会存在队列中,当一切准备就绪后按顺序调用

 

  对于上面的几句代码就能连接成功redis服务器,原因是当前redis服务器在本地,如果不在本地,怎么连接呢?

  示例源码

  也是成功!这种方式和上一种在redis.createClient()时分别传入了端口号、服务器IP和设置项

  这样就可以用于连接远程的redis服务器,或者利用第三个参数进行一些配置!

  redis的默认端口:6379

认证 client.auth(password, callback)

  上面试过了,连接到redis服务器,可以看出我们并没有输入密码进行验证的过程就成功连接到了服务器,因为redis服务器默认不需要密码,不过这不太安全,我们肯定要设置一下密码

  打开redis.conf文件,找到requirepass,取消注释,设置密码为:porschev

requirepass porschev

  然后重启redis服务器;再次利用上面的代码连接到redis服务器,出现错误提示(如下图):ERR operation not permitted

  那么如何连接到有密码的redis服务器呢?

  简单的试了一下,有两种方法(可能有更多,没试,其实一种完全就够了,多了也没用^_^!)

  方式一:通过设置redis.createClient()的第三个参数,也就是设置项来完成

 

  示例源码

  上图可以连接成功,通过设置连接设置项中的auth_pass来通过认证!

  auth_pass:默认值为null,默认情况下客户端将不通过auth命令连接,如果设置了此项,客户端将调用auth命令连接

  方式二:通过client.auth(password, callback)

  示例源码

  此方法也可以成功,第一个参数为密码,第二个为回调函数!

单值set和get

  示例源码

  从输出结果可以看出,set一个值和获取这个值都成功!

  代码讲一下:

  client.set(key,value,[callback]):设置单个key和value,回调函数可选

  client.get(key,[callback]):得到key得到value,回调函数可选(虽然可选,但不写回调函数获取又有什么意义呢^_^!)

  connect:Redis的Connection事件之一,在不设置client.options.no_ready_check的情况下,客户端触发connect同时它会发出ready,如果设置了client.options.no_ready_check,当这个stream被连接时会触发connect,

          这时候就可以自由尝试发命令

  redis.print:简便的回调函数,测试时显示返回值(从示例的输出结果中可以看出)

 

  其它补充说明:

      client.options.no_ready_check:默认值为false,当连接到一台redis服务器时,服务器也许正在从磁盘中加载数据库,当正在加载阶段,redis服务器不会响应任何命令,node_redis会发送一个“准备确认”的INFO命令,

                 INFO命令得到响应表示此时服务器可以提供服务,这时node_redis会触发"ready"事件,如果该设置项设置为true,则不会有这种检查

  client.set([key,value],callback):与client.set(key,value,[callback]);效果一致(可以自行对上面示例源码进行修改进行测试),必须要有回调函数

多值get和set

  示例源码

  从输出结果可以看出,set多值和获取都成功!

  代码讲一下:

  client.hmset(hash, obj, [callback]):赋值操作,第一个参数是hash名称;第二个参数是object对象,其中key1:value1。。,keyn:valuen形式;第三个参数是可选回调函数

  client.hmset(hash, key1, val1, ... keyn, valn, [callback]):与上面做用一致,第2个参数到可选回调函数之前的参数都是key1, val1, ... keyn, valn形式;

  client.hgetall(hash, [callback]):获取值操作,返回一个对象

 

  其它补充说明:

  console.dir():用于显示一个对象所有的属性和方法

打包执行多个命令[事务]

  示例源码

  官方有个示例,我修改一下,可能更好理解一些,下面一步步说吧!

    先了解一下API再看结果

  client.multi([commands]):这个标记一个事务的开始,由Multi.exec原子性的执行;github上描述是可以理解为打包,把要执行的命令存放在队列中,redis服务器会原子性的执行所有命令,node_redis接口返回一个Multi对象

  Multi.exec( callback ):执行事务内所有命令;github上描述是client.multi()返回一个Multi对象,它包含了所有命令,直到Multi.exec()被调用;

  Multi.exec( callback )回调函数参数err:返回null或者Array,出错则返回对应命令序列链中发生错误的错误信息,这个数组中最后一个元素是源自exec本身的一个EXECABORT类型的错误

  Multi.exec( callback )回调函数参数results:返回null或者Array,返回命令链中每个命令的返回信息

  end:redis已建立的连接被关闭时触发

  client.sadd(key,value1,...valuen,[callback]):集合操作,向集合key中添加N个元素,已存在元素的将忽略;redis2.4版本前只能添加一个值

  sismember(key,value,[callback]):元素value是否存在于集合key中,存在返回1,不存在返回0

  smembers(key,[callback]):返回集合 key 中的所有成员,不存在的集合key也不会报错,而是当作空集返回

  client.quit():与之对应的还有一个client.end()方法,相对比较暴力;client.quit方法会接收到所有响应后发送quit命令,而client.end则是直接关闭;都是触发end事件

 

  再看结果应该就比较简单了,client.multi打包了sismember和smembers两个命令,执行exec方法后,回调函数得到两个回应,分别输出两个回应的结果!

其它...

  redis.debug_mode:这个在开发中可能有用,大家自行设置试一下,设置为true后,看输出

  Publish / Subscribe:这个官方示例比较简单清晰,大家运行起来看一下就能理解,深入的网上还有很多用它实现的聊天、监控示例,大家看一下,如果以后觉得有必要就再做个示例分享一下

  client.monitor:监控,可能以后会用到,有需要的深入研究一下,入门可以略过

 

  其它redis命令还有不少,能讲到的非常有限,深入练习可以对照:http://redis.readthedocs.org/en/latest/index.html

 

  参数资料:

  https://github.com/mranney/node_redis/

  http://redis.readthedocs.org/en/latest/index.html

  http://dumbee.net/archives/114

OpenClaw Windows 部署全链路指南:WSL2、Docker 与 Node.js 兼容性实战 本地大模型 Agent 框架(如 OpenClaw)正成为 AI 应用开发的关键基础设施,其核心能力在于 Skill 插件编排与轻量级工作流调度。这类框架普遍基于 Node.js 构建,依赖 Docker 容器化运行时和文件系统事件监听机制,但原生 Windows 环境缺乏 POSIX 兼容性、/tmp 目录语义及稳定的 fork() 子进程支持,导致部署失败率极高。技术价值体现在打通‘本地模型+Python 脚本+外部 API’的闭环自动化,典型场景包括 Excel 数据清洗、PPT 大纲生成、多源信息聚 阅读详情

相关推荐

Node.js+K8s生产部署实战:Semaphore与DigitalOcean CI/CD全链路详解

Kubernetes容器编排与CI/CD持续交付是现代云原生应用的核心能力。理解其底层原理——如Pod调度机制、镜像拉取认证流程、健康探针设计逻辑及资源请求/限制的CPU毫核(millicores)语义——是实现稳定交付的前提。技术价值在于将开发成果可靠、可重复、安全地转化为线上服务,避免因权限配置错误、网络策略缺失或环境变量注入失效导致的ImagePullBackOff、CrashLoopBackOff等高频故障。典型应用场景涵盖中小团队MVP快速验证、Node.js微服务上云、以及基于托管K8s集群(如

weixin_34151004的博客 352

Nodejs学习笔记(九)--- 与Redis的交互(mranney/node_redis)入门

目录 简介和安装 redis简介 redis安装 redis运行 node_redis安装 连接到redis服务器redis.createClient() 认证 client.auth(password, callback) 单值set和get client.set(key,value,[callback]) client.get(ke...

dbow21397的博客 1008

WhatsApp消息驱动的PC自动化系统:无服务器本地命令执行方案

WhatsApp消息驱动自动化是一种基于即时通讯通道触发本地计算任务的技术范式,其核心在于将文本指令解析为可执行命令,并在终端设备上安全落地。它融合了浏览器自动化、本地进程控制与白名单访问机制,具备零云依赖、低学习门槛和高审计透明度的技术优势。相比远程桌面或Telegram Bot等方案,该模式天然规避了会话劫持、权限泛滥与协议黑盒风险,特别适用于家庭NAS管理、无人值守服务器运维及非技术人员可控操作等轻量级场景。OpenClaw正是这一理念的典型实现,聚焦WhatsApp Web自动化与本地命令执行两大关

weixin_30847865的博客 487

Redis数据库在Node.js中的使用

文章摘要:本文介绍了Node.js中使用redis模块的基本操作。首先说明如何安装redis模块,然后演示连接Redis服务器的方法。主要内容包括:1)字符串类型数据的增删改查操作,包括设置过期时间;2)列表数据的左右侧插入删除操作;3)集合数据的添加和查询;4)哈希类型数据的操作;5)发布/订阅模式的使用。文中提供了详细的代码示例,展示了各种Redis数据结构的操作方法,以及如何实现消息的发布和订阅功能。

分享前端工程化、AI 应用、Agent 开发与大模型实践! 1409

nodejs-redis-cluster:redis3.0的nodejs扩展,支持集群

nodejs-redis-cluster redis3.0 的 nodejs 扩展,支持基于 nodejs npm redis url 的集群: : 更改日志 当我们向 redis 集群的一个节点发送命令时,我们可能会收到类似“ERR: MOVED 111 127.0.0.1:6379”的返回错误。 这不是错误,而是一条消息告诉我们在哪里可以找到数据,因此我更改了 index.js,添加了一些代码来重定向 redis 连接并将长连接保存在数组中。 一些功能发生了变化,包括但不限于:关闭 return_error 键集群

UR10e+D435+ag95夹爪 gazebo 仿真记录(一)

学习仿真环境gazebo下利用UR10e机械臂搭建模拟平台,此博客用于记录搭建过程!!主要参考光头明明、总有一天全城的人都要高看我们和bug404_三位博主。最终自己功能包的主要参考了bug404_的ur_platform,感觉这个结构比较合理。运行环境:Ubuntu18.04+Ros-melodic+Gazebo9。

Forbiven的博客 6328

在 Node.js 中操作 Redis

在 Node.js 中操作 Redis

随风浅入画 1870

GAN网络详解析

介绍目前常见的GAN网络,以及GAN网络的基本组成

wm199的博客 6504

Redis - Commands

http://redisdoc.com/index.html

yuxuac的专栏 533

使用 ChatGPT/Copilot 提升前端开发效率的 N 种方式

typescript// 输入:根据这个 JavaScript 对象,生成完整的 TypeScript 类型定义id: '123',stock: 50,},// ChatGPT 生成:id: string;discount?: number;// 可选属性// 只读属性// 更进一步,生成 Zod schema 用于运行时验证:});}),});AI 代码助手真正的革命性不在于它能生成多少代码,而在于它改变了我们解决问题的方式。

fineday 1592

【白话系列】倍增算法

【序言】         我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形象的方式来纪念它。 【一】         从前,有一只可爱得不得了的小白兔,它想从

JarjingX 3万+

Redis入门到五连绝世

一、Nosql 的简介 ​ 主要Nosql数据库:redis,Memcache,Mongdb 1、功能优点 易扩展 NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。 数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。 大数据量高性能 NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据...

码坑中的咸鱼 292

汇编语言与USB量产工具开发解析

本文解析了汇编语言在USB量产工具开发中的应用。USB量产工具主要用于批量配置USB设备,包括固件烧录、格式化、信息写入等功能。汇编语言在底层硬件操作中发挥关键作用,如直接控制USB寄存器、编写驱动和精确时序控制。文章通过伪代码示例展示了USB控制器初始化和固件烧录流程,并强调硬件依赖性、安全机制和时序精度等注意事项。开发需严格遵循芯片手册,建议优先使用厂商SDK,避免设备损坏风险。

RulesChen的博客 1024

node.js 监听redis 过期时间通知

将redis.conf 中notify-keyspace-events Ex 前注释去掉。定时任务提供一个redis解决方案。

写代码的姜总的博客 496

120、NPU的Mythic M1076:模拟存算一体NPU

这篇文章分享了作者调试Mythic M1076模拟存算一体NPU的实战经验,主要包含以下要点: 硬件设计陷阱:参考电压输入必须使用低ESR电容,普通贴片电容会导致模拟计算阵列工作异常。 核心技术原理: 采用真正的存算一体架构,将权重存储为模拟电压 使用浮栅晶体管存储权重,通过电流叠加实现乘法运算 包含108个计算单元阵列(Tile),每个256×256规模 使用注意事项: 编程模型特殊,需要依赖SDK自动映射网络层 存在6-8位有效精度限制,需用量化感知训练 功耗特性独特,静态偏置电流占主要功耗 调试手段有

m0_50546716的博客 122

SAP ABAP CO核心扩展-ZCKMLQS 多物料工厂的评估数量结构报表(CKMLQS)

CKMLQS 只能查看单一物料工厂的评估数量结构,SAP 没有提供多物料工厂的评估数量结构报表。这篇文章将实现 CO核心扩展-ZCKMLQS 多物料工厂的评估数量结构报表。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 1089

Redis的自白:我为什么在单线程的这条路上越走越远?

来源 | Java中文社群(ID:javacn666)我是 Redis,今年 11 岁了~曾几何时我是辣么的单纯,辣么的可爱,而如今我竟背叛了当初“誓言”,决心在多线程这条路上义无反顾的...

架构师小秘圈 236

DCM07-诊断服务EcuReset ($11 )的配置和实现

文章目录1 诊断服务EcuReset ($11 )1.1 概述1.2 诊断模式声明组1.3 代码实现1.4 配置参数 传送门 ==>> AutoSAR实战系列300讲「糖果Autosar」总目录 1 诊断服务EcuReset ($11 ) 1.1 概述 该服务实现了 ECU 内的复位功能,协议的具体理论讲解请参考「FlashBootloader03【电控单元复位服务($11)】」。在接收到UDS 服务 0x11 的请求时,DCM 模块应触发 ModeDeclarationGroupPrototy

2064

Deployer系统requirements深度解析:搭建前必须知道的配置要点

Deployer是一款免费开源的部署工具,在搭建前了解其系统requirements配置要点至关重要,能确保部署过程顺利进行。本文将深度解析Deployer搭建前必须知道的配置要点,助你轻松完成环境准备。 ### 一、PHP环境要求 Deployer对PHP环境有特定要求。从[app/Console/Commands/Installer/Requirements.php](https://lin

gitblog_00652的博客 447

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

企业级知识库系统部署终极指南:构建高效团队协作平台

Outline作为一款基于React和Node.js构建的现代化知识库系统,为企业团队提供了实时协作、文档管理和知识共享的完整解决方案。本文将为您提供从零开始部署企业级Outline知识库系统的完整指南,涵盖架构设计、部署实施、性能优化和安全配置等关键环节。 ## 为什么选择Outline作为企业知识管理平台? 在数字化工作环境中,团队知识管理面临着诸多挑战:文档分散、信息孤岛、协作效率低下以

gitblog_00105的博客 1077

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

解决Shawl服务部署难题:工作目录与环境变量配置终极指南

Shawl是一款强大的Windows服务包装工具,它能将任意程序作为Windows服务运行,解决了许多开发者和系统管理员在服务部署中遇到的难题。😊 本文将重点介绍Shawl在工作目录和环境变量配置方面的最佳实践,帮助你快速解决服务部署中的常见问题。 ## 为什么工作目录配置如此重要? 默认情况下,Windows服务的工作目录是`C:\Windows\System32`,这会导致许多应用程序无

gitblog_01043的博客 925

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MinIO文件存储服务搭建

https://docs.min.io/cn/

叶子的博客 3528

Shawl安全最佳实践:5个关键步骤从Local System到Network Service账户配置

Shawl是一个用Rust编写的Windows服务包装器,它允许你将任意程序作为Windows服务运行。对于需要将应用程序部署为服务的开发者来说,Shawl提供了简单而强大的解决方案。然而,默认使用Local System账户运行服务会带来严重的安全风险,本文将为你详细介绍如何通过5个关键步骤实现从Local System到Network Service账户的安全配置。🔒 ## 为什么需要关注

gitblog_00685的博客 1413

Shawl常见问题排查指南:快速解决Windows服务启动失败与日志错误

Shawl是一款强大的Windows服务包装器工具,专为将任意程序作为Windows服务运行而设计。如果你在使用Shawl过程中遇到服务启动失败或日志错误问题,这篇完整的问题排查指南将帮助你快速定位并解决这些问题。🚀 ## 为什么选择Shawl作为Windows服务包装器? Shawl与其他Windows服务管理工具相比,最大的优势在于**无需特殊安装命令**。你可以像配置普通Windows

gitblog_00806的博客 649

JB3-9-SpringAI(一)

基础对话,通义千问,SpringAI,SpringAIAlibaba,AI对话,文生图,文生音频,文生视频,AI记忆,RAG,ETL,向量库,ToolCalling,MCP,Graph 等。

周航宇的博客 3924

终极指南:如何用Shawl将任意程序快速转换为Windows服务

作为Windows开发者和系统管理员,你是否曾为让应用程序以服务方式运行而烦恼?传统的Windows服务开发需要处理复杂的API,调试困难,部署繁琐。现在,有了Shawl这个由Rust编写的轻量级工具,你可以轻松将任何可执行程序转换为Windows服务,无需编写一行服务代码!🚀 ## 为什么你需要Shawl?Windows服务化的痛点与解决方案 Windows平台上的服务管理一直是个技术挑战

gitblog_00916的博客 322
上一篇: docker summary
下一篇: docker daemon run /bin/bash discussion
screaming
博客等级 码龄19年 61粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值