Nodejs 第四十八章(ioredis)

ioredis 是一个强大且流行的 Node.js 库,用于与 Redis 进行交互。Redis 是一个开源的内存数据结构存储系统。ioredis 提供了一个简单高效的 API,供 Node.js 应用程序与 Redis 服务器进行通信。

以下是 ioredis 的一些主要特点:

  1. 高性能:ioredis 设计为快速高效。它支持管道操作,可以在一次往返中发送多个 Redis 命令,从而减少网络延迟。它还支持连接池,并且可以在连接丢失时自动重新连接到 Redis 服务器。
  2. Promises 和 async/await 支持:ioredis 使用 promises,并支持 async/await 语法,使得编写异步代码和处理 Redis 命令更加可读。
  3. 集群和 sentinel 支持:ioredis 内置支持 Redis 集群和 Redis Sentinel,这是 Redis 的高级功能,用于分布式设置和高可用性。它提供了直观的 API,用于处理 Redis 集群和故障转移场景。
  4. Lua 脚本:ioredis 允许你使用 eval 和 evalsha 命令在 Redis 服务器上执行 Lua 脚本。这个功能使得你可以在服务器端执行复杂操作,减少客户端与服务器之间的往返次数。
  5. 发布/订阅和阻塞命令:ioredis 支持 Redis 的发布/订阅机制,允许你创建实时消息系统和事件驱动架构。它还提供了对 BRPOP 和 BLPOP 等阻塞命令的支持,允许你等待项目被推送到列表中并原子地弹出它们。
  6. 流和管道:ioredis 支持 Redis 的流数据类型,允许你消费和生成数据流。它还提供了一种方便的方式将多个命令进行管道化,减少与服务器之间的往返次数。

使用方法

安装

npm i ioredis

连接redis

import Ioredis from 'ioredis'const ioredis = new Ioredis({host: '127.0.0.1', //ipport: 6379, //端口
})
  1. 字符串
//存储字符串并且设置过期时间
ioredis.setex('key', 10, 'value') 
//普通存储
ioredis.set('key', 'value')
//读取
ioredis.get('key')
  1. 集合
// 添加元素到集合
redis.sadd('myset', 'element1', 'element2', 'element3');// 从集合中移除元素
redis.srem('myset', 'element2');// 检查元素是否存在于集合中
redis.sismember('myset', 'element1').then((result) => {console.log('Is member:', result); // true});// 获取集合中的所有元素
redis.smembers('myset').then((members) => {console.log('Members:', members);});
  1. 哈希
// 设置哈希字段的值
redis.hset('myhash', 'field1', 'value1');
redis.hset('myhash', 'field2', 'value2');// 获取哈希字段的值
redis.hget('myhash', 'field1').then((value) => {console.log('Value:', value); // "value1"});// 删除哈希字段
redis.hdel('myhash', 'field2');// 获取整个哈希对象
redis.hgetall('myhash').then((hash) => {console.log('Hash:', hash); // { field1: 'value1' }});
  1. 队列
// 在队列的头部添加元素
redis.lpush('myqueue', 'element1');
redis.lpush('myqueue', 'element2');// 获取队列中所有元素
redis.lrange('myqueue', 0, -1).then((elements) => {console.log('Queue elements:', elements);});
//获取长度
redis.llen('myqueue').then((length) => {console.log('Queue length:', length);
});

发布订阅

// 引入 ioredis 库
import Ioredis from 'ioredis';// 创建与 Redis 服务器的连接
const ioredis = new Ioredis({host: '127.0.0.1',port: 6379,
});// 创建另一个 Redis 连接实例
const redis2 = new Ioredis();// 订阅频道 'channel'
ioredis.subscribe('channel');// 监听消息事件
ioredis.on('message', (channel, message) => {console.log(`Received a message from channel ${channel}: ${message}`);
});// 发布消息到频道 'channel'
redis2.publish('channel', 'hello world');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android开发者该学习哪些东西提高竞争力,Github上最值得学习的10个Android开源项目

什么是 HTTPS? HTTPS (基于安全套接字层的超文本传输协议 或者是 HTTP over SSL) 是一个 Netscape 开发的 Web 协议。 你也可以说:HTTPS HTTP SSL HTTPS 在 HTTP 应用层的基础上使用安全套接字层作为子层。 为什么需要 HTTPS ? 超文本传输协议 (…

Linux 查看硬件常用命令

lshw 显示完整的硬件信息,需要以管理员权限运行。 lshw lspci: 该命令用于列出所有连接到PCI总线的设备信息。 lspci lsusb: 该命令用于列出所有连接到USB总线的设备信息。 lsusb lsblk: 该命令用于列出块设备(硬…

Apache Log4j 远程代码执行漏洞的终极解决方案

1.背景 最近一个老系统被检查出有Apache Log4j 远程代码执行漏洞,需要解决此问题,基于此,写此文章记录一下 2.问题分析 老生常谈了,之前发现此漏洞,处理方案都是升级jar包 但是,漏洞随着时间一直有出现&…

第三百八十三回

文章目录 1. 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了ModalBarrier组件相关的内容,本章回中将介绍Visibility组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的Visibility组件是一种容器类组件,主要…

图像质量评价指标计算python代码,PSNR,SSIM,fsim,niqe,lpips,rmse,德尔塔δe

图像质量评价指标计算python,PSNR,SSIM,fsim,niqe,lpips,rmse,德尔塔δe import numpy as np from skimage.metrics import structural_similarity as ssim from skimage.metrics import peak_s…

【LeetCode】第 387 场周赛

3069. 将元素分配到两个数组中 I 给你一个下标从 1 开始、包含 不同 整数的数组 nums ,数组长度为 n 。 你需要通过 n 次操作,将 nums 中的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操作中,将 nums[1] 追加到 arr1 。在第二次操作…

SpringBoot之获取Spring容器上下文组件的工具类封装

SpringBoot之获取Spring容器上下文组件的工具类封装 文章目录 SpringBoot之获取Spring容器上下文组件的工具类封装1. SpringBoot版本2. Spring容器上下文工具类封装 如在一个普通类中获取HttpServletRequest、HttpServletResponse…等等以工具类的形式getBen,而不需要Component…

win11环境下使用hane WIN NFS Server搭建nfs服务

如题,服务端使用hane win nfs server,客户端也是使用wins系统。 S1,安装nfs服务器端,wins系列除了server系列可以使用nfs服务端,其余必须使用额外的组件来实现NFS文件系统的功能。 Networking Software for Windows …

系统学习Python——装饰器:直接管理函数和类

分类目录:《系统学习Python》总目录 在《系统学习Python——装饰器》系列文章中,我们的大多数示例都设计来拦截函数和实例创建调用。这对于装饰器来说很典型,但是它们并不限于这一角色。因为装饰器通过装饰器代码来运行新的函数和类&#xff…

Nodejs 第四十六章(redis持久化)

redis持久化 Redis提供两种持久化方式: RDB(Redis Database)持久化:RDB是一种快照的形式,它会将内存中的数据定期保存到磁盘上。可以通过配置Redis服务器,设置自动触发RDB快照的条件,比如在指…

C#进阶高级语法之LINQ:深入分析LINQ的查询表达式、延迟执行与PLINQ高级特性

LINQ(Language-Integrated Query)是.NET框架的一个强大的查询语言,它可以用来查询各种数据源,如集合、数据库等。LINQ提供了许多高级特性,包括LINQ查询表达式、deferred execution和PLINQ(并行LINQ&#xf…

力扣每日一题 用栈实现队列

Problem: 232. 用栈实现队列 文章目录 思路复杂度💖 朴素版💖 优化版 思路 👨‍🏫 路飞题解 复杂度 时间复杂度: 添加时间复杂度, 示例: O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例: O ( …

Linux系统的服务/进程

系统守护进程(服务) •服务就是运行在网络服务器上监听用户请求的进程 •服务是通过端口号来区分的 常见的服务及其对应的端口 1.ftp:21 FTP指的是文件传输协议,它是用于在计算机网络上进行文件传输的标准网络协议。通过FTP&am…

HTTP协议与HTTPS协议

HTTP协议 HTTP协议是一个无状态的协议, 服务器不维护任何有关客户端之前所发请求的消息。 是一种懒政,有状态协议就会更加复杂,需要维护状态(历史信息),要是客户或者服务器失效,会产生状态不一致(状态前后不对称),解决…

【Python 常用脚本及命令系列 2.4 -- int 将字符串数字转为数值】

文章目录 Python int() 函数python 将字符串数字转为数值type 函数使用 Python int() 函数 int() 函数用于将一个字符串或数字转换为整型。 以下是 int() 方法的语法: class int(x, base10)x – 字符串或数字。base – 进制数,默认十进制,如果是16进制…

C++对象内存模型布局详解

目录 本文主要内容如下: 最后还有一些问题: 一、理解虚函数表 二、对象模型概述 三、继承下的C对象模型 单继承: 多继承: 一般的多继承(非菱形继承): 菱形继承: 五、虚继承…

【牛客】VL64 时钟切换

描述 题目描述: 存在两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频,现在要设计一个切换电路,sel选择时候进行切换,要求没有毛刺。 信号示意图: 波形示意图: 输入描述: clk0 clk1为时…

第四十七天| 198.打家劫舍、213.打家劫舍II、337.打家劫舍III

Leetcode 198.打家劫舍 题目链接:198 打家劫舍 题干:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚…

12-Linux部署Zookeeper集群

Linux部署Zookeeper集群 简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。…

jmeter 压测数据库

当前版本: jmeter 5.6.3mysql 5.7.39 简介 JMeter 是一个开源的 Java 应用程序,主要用于进行性能测试和负载测试。它支持多种协议,包括但不限于 HTTP、HTTPS、FTP、JDBC 以及各种 Web Services。对于数据库的压力测试可以使用 JDBC 协议与数…