首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用ioredis在一个原子操作中发送多个BITOP

使用ioredis在一个原子操作中发送多个BITOP
EN

Stack Overflow用户
提问于 2019-02-18 07:46:58
回答 1查看 187关注 0票数 0

我在node.js中使用ioredis客户机(@4.6.2),我需要执行很多位操作(这些操作互不依赖)。就像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as ioredis from "ioredis";

...

private readonly client: ioredis.Redis;
this.client = new ioredis("my_url");

...

await this.client.send_command("BITOP", "OR", "a_or_b", "a", "b");
await this.client.send_command("BITOP", "OR", "a_or_c", "a", "c");
await this.client.send_command("BITOP", "OR", "a_or_d", "a", "d");
await this.client.send_command("BITOP", "OR", "a_or_e", "a", "e");
// etc...

对于其他一些操作(如setbit),我可以使用管道对象及其exec()函数原子地运行它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const pipeline: Pipeline = this.client.pipeline();
pipeline.setbit(a, 1, 1);
pipeline.setbit(a, 12, 0);
pipeline.setbit(b, 3,  1);
await pipeline.exec();

但我找不到任何pipeline.bitop()pipeline.send_command()函数。

有没有办法在原子操作中发送这些BITOP命令?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 03:04:45

我终于成功地做到了,使用一系列命令作为构造函数的参数(如ioredis文档中所描述的),而且速度更快!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const result: number[][] = await this.redis.pipeline([
      ["bitop", "OR", "a_or_b", "a", "b"],
      ["bitop", "OR", "a_or_c", "a", "c"],
      ["bitop", "OR", "a_or_d", "a", "d"],
      ...

      ["bitcount", "a_or_b"],
      ["bitcount", "a_or_c"],
      ["bitcount", "a_or_d"],
      ...
]).exec();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54750860

复制
相关文章
Nodejs中使用ioredis库
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
ccf19881030
2020/04/12
5.9K0
[并发编程系列]Java中的原子操作类
1. 原子操作类的作用 当程序更新一个变量时,如果多个线程同时更新该变量,可能会得到期望以外的值。比如i=1, 线程A更新i+1, 同时线程B更新I+1,经过两个线程的操作,最终变量i的值可能不是3,而是2。因为线程A、B拿到的i的值都是1,这就是线程不安全的更新操作。我们可以用synchronized来解决这样的问题,synchronized可以保证多线程之间的同步,以保证多个线程不会同时操作变量i。 但是在JDK1.5开始,就提供了java.util.concurren
用户2017109
2018/06/19
6080
Java中如何实现原子操作?
在Java中,J实现原子操作 可以通过锁和循环CAS的方式来实现原子操作。 1 使用循环CAS操作原子操作 package com.yy;
爱明依
2019/03/12
8610
使用 pyenv 可以在一个系统中安装多个python版本
2016.01.06 21:02* 字数 82 阅读 24416评论 11喜欢 12
拓荒者
2019/03/11
3.2K0
原子操作
原子操作是指一个或者多个不可再分割的操作。这些操作的执行顺序不能被打乱,这些步骤也不可以被切割而只执行其中的一部分(不可中断性)。在 Java 中通过原子操作来完成工作内存和主内存的交互,其中原子操作又可分为如下几类:
DioxideCN
2023/01/10
9310
原子操作类
原子性这个概念,在多线程编程里是一个老生常谈的问题。 所谓的原子性表示一个或者多个操作,要么全部执行完, 要么一个也不执行。不能出现成功一部分失败一部分的情 况。在多线程中,如果多个线程同时更新一个共享变量,可能 会得到一个意料之外的值。比如 i=1 。A 线程更新 i+1 、 B 线程也更新 i+1。通过两个线程并行操作之后可能 i 的值不等于 3。而可能等 于 2。因为 A 和 B 在更新变量 i 的时候拿到的 i 可能都是 1 这就是一个典型的原子性问题。
会说话的丶猫
2020/08/17
1.1K0
在一个组件中使用多个useEffect钩子
在一个组件中使用多个useEffect钩子。React Hooks允许在组件中使用任意数量的useEffect钩子来处理不同的副作用操作或监听不同的触发时机。
王小婷
2023/09/17
8970
在Java中,使用HttpUtils实现发送HTTP请求
HTTP请求,在日常开发中,还是比较常见的,今天给大家分享HttpUtils如何使用。
冯文议
2023/03/12
4.4K0
在Java中,使用HttpUtils实现发送HTTP请求
CAS 原子操作
  有时候面试官面试问你的时候,会问,谈谈你对CAS的理解,这时应该有很多人,就会比较懵,当然,我也会比较懵,当然我和很多人的懵不同,很多人可能,并不知道CAS是一个什么东西,而在我看来我是不知道他问的是那个CAS
后端码匠
2020/10/27
1K0
CAS 原子操作
有时候面试官面试问你的时候,会问,谈谈你对CAS的理解,这时应该有很多人,就会比较懵,当然,我也会比较懵,当然我和很多人的懵不同,很多人可能,并不知道CAS是一个什么东西,而在我看来我是不知道他问的是那个CAS
彼岸舞
2020/11/06
8440
协程源码中的原子操作为什么使用 AtomicReferenceFieldUpdater?
AtomicReferenceFieldUpdater 比 AtomicReference 用起来稍微有些麻烦,可大佬为什么更喜欢它?
bennyhuo
2020/02/20
6220
ioredis源码阅读[1]
开门见山,我们使用 Cluster 模式最开始也是要进行实例化的,这里调用的代码位于 lib/cluster/index.ts:
贾顺名
2021/04/08
7320
Java中的13个原子操作类
该项目的地址:https://github.com/xiaoheng1/concurrent-programming
JAVA葵花宝典
2019/11/08
9780
Java中的12个原子操作类
当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值。 比如变量 i = 1,A 线程更新 i+1,B 线程也更新i+1,经过两个线程操作之后可能 i 不等于 3,而是等于 2 。 因为 A 和 B 线程在更新变量 i 的时候拿到的 i 都是 1,这就是 线程不安全的更新操作,通常我们会使用 synchronized 来解决这个问题,synchronized 会保证多线程不会同时更新变量 i。
103style
2022/12/19
2950
ioredis源码阅读[0]
从项目中看,源码都在 lib 文件夹下,是一个纯粹的 TS 项目。 lib 目录下的文件主要是一些通用能力的提供,比如 command、pipeline以及数据的传输等。
贾顺名
2020/12/18
5870
ioredis源码阅读[0]
硫原子在药物设计中的作用
缺电子的二价硫原子具有两个正电势区域,可以与氮、氧或者π体系这些电子供体形成类似氢键的作用,这种相互作用广泛存在于天然产物和药物分子中,硫原子对于调节分子的构象和活性具有令人欣喜的效果。
智药邦
2023/02/15
1K0
硫原子在药物设计中的作用
并发基础之原子操作与原子变量
题外话:最近忙于产品,公众号好久没有更新了,等忙过了这段时间再继续分析go的runtime代码及其它一些优秀的源代码,所以在此先把几年前发于知乎专栏的一篇文章(有部分修改)搬到公众号,这篇文章虽然是以java/c为例对原子操作及原子变量进行的说明,但万变不离其宗, 编程领域中的很多知识都是相通的,所以这里介绍的概念以及技术细节很容易迁移到其它语言之中。
阿波张
2019/07/30
1.5K0
Go语言原子操作
代码中的加锁操作因为涉及内核态的上下文切换会比较耗时、代价比较高。针对基本数据类型我们还可以使用原子操作来保证并发安全,因为原子操作是Go语言提供的方法它在用户态就可以完成,因此性能比加锁操作更好。Go语言中原子操作由内置的标准库sync/atomic提供。
机智的程序员小熊
2023/03/02
1.2K0
Go语言原子操作
原子操作类解读
Java中提供了一些原子操作类,用于实现多线程环境下的数据同步问题。其中最常见的有以下几种:
一个风轻云淡
2023/10/15
2380
原子操作类解读
Java的原子操作
incr 方法内部就是临界区域,关键部分代码的多线程并发执行,会对执行结果产生影响。
JavaEdge
2021/02/22
6180

相似问题

使用ioredis订阅多个频道

11

使用ioredis向redis发送任意命令

236

在ioredis中使用SREM删除多个条目?

116

多个原子变量赋值是原子操作吗?

20

原子地执行多个操作

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文