草庐IT

TRANSACTIONS

全部标签

go - Golang 中的原子和并发安全 Redis 事务

我正在尝试在我的go程序中实现以下逻辑:defaction:1.GETthevalueofKEYfromRedis2.SETthevalueofKEYto0我正在使用go-redis与我的Redis实例交互的模块。我熟悉Redis事务,但我似乎找不到合适的文档或示例来说明如何在Golang中以并发安全和原子的方式实现所需的操作集。问题:如何实现定义的action并确保在步骤1和2之间不会发生其他Redis操作,即使我从不同的位置访问我的Redis实例也是如此去例行公事? 最佳答案 您可以使用单个Redis命令GETSET来完成此操作

javascript - Redis MULTI 事务在 NodeJS 中的 EXEC 回调中随机返回 null

我遇到一个问题,EXEC的回调随机返回一些值作为null。大部分时间代码运行良好,但随机失败(或者如果我反复刷新浏览器)...这里是简化到失败点的代码:vartransaction=client.multi();reply.forEach(function(id){//replyalwaysequals['mykey1','mykey2']transaction.hgetall(namespace+":"+id);});transaction.exec(function(err,replies){//'replies'sometimesreturnsalltheresponsespro

C# MongoDB : Querying a $match on an array after an $unwind

我有一个要使用IAggregateFluent执行的聚合管道。这是与数据库的类映射publicclassCard{publicObjectIdId{get;set;}publicstringCardNumber{get;set;}publicstringCustomerId{get;set;}publicdecimalBalanceAmount{get;set;}publicstringCurrency{get;set;}publicListTransactions{get;set;}}和CardTransaction一样publicclassCardTransaction{//pub

mongodb - 你如何在 NoSQL 中进行原子的、多记录的、相互依赖的操作?

我最初熟悉关系型数据存储。我目前正在研究NoSQL并尝试了解它的用例。这是最近一直困扰我的事情。如何使用典型的NoSQL产品进行以下操作?读取多个输入为它们计算新值(每个输出取决于所有输入)写回值根据过去处理其他问题的经验,这方面的一个例子如下。您有一个包含多个用户帐户的网页游戏。用户可以相互发起攻击,其中攻击公式是复杂的黑盒游戏逻辑,它根据输入和随机性来确定相互的结果。您需要强制执行攻击以原子方式发生,并且输入和输出反射(reflect)一致的时间点,关于游戏中执行的攻击序列的某种序列化。重要的是:所有输出都以某种我们无法分解的复杂方式依赖于所有输入(即我们不能将其转换为教科书银行账

mongodb - 文档DB和模拟ACID

见最后的结果我想使用文档数据库(出于各种原因)-可能是couchdb或mongodb。但是,我还需要acid处理多个文档事务。但是,我确实计划使用“仅添加”模型-更改将作为新文档添加(添加是添加,更新是添加副本+转换数据,删除是添加具有相同ID+删除标志的空文档)。我将定期对数据库运行压缩以删除非当前文档。有鉴于此,以下观点是否存在漏洞:维护当前正在进行的事务的集合。此集合将保存具有正在进行的事务的事务ID(guid+时间戳)的文档。Atomicity:Onatransaction:Addadocumenttothetransactionsinprogresscollection.Ad

mongodb - Mongoid 中的事务 (MongoDB)

我正在创建一个p2p内容共享平台,用户可以在其中通过相互付款来订阅内容。我正在使用第三方支付网关,但我不知道如何使用Mongoid(MongoDB)设计此操作付款成功后,订阅文件将添加到买家账户,需要为发布者更新订阅数量。如果我的系统在交易后崩溃了,我该如何保持它的一致性?我目前正在为此寻找两阶段提交方法,但如果有人能提供更多有用的信息,我将不胜感激。 最佳答案 一个很晚的答案,但信息是全新的:MongoDB4.0将支持多文档ACID事务据我所知,该版本计划于2018年初夏发布,时间为thisblogpostfurtherdetai

transactions - 使用 MongoDB 进行两阶段提交

这就是我的想法。当使用像MongoDB这样的每个操作都是原子的并且不支持除此之外的事务时,您是否看到此解决方法有任何问题来模拟2阶段提交?transaction_scope:readmessagefromservicebus-UpdateCustomerAddressgetcustomeraggregatefromdocdb,replayeventswherecommited=1callcustomer.updateAddressvalidatescreatescustomeraddressupdatedeventapplyeventeventstoreasuncommittedeve

c# - 如何用mongoDB进行 "all or nothing"操作?

我需要在文档的字段数组中插入一些元素。好吧……我知道Mongo有原子更新。推送……事实是我需要在很多文档中做这个插入。情况如下(我需要为每个用户名插入一个角色数组):publicoverridevoidAddUsersToRoles(string[]usernames,string[]roleNames){foreach(stringroleinroleNames){if(!this.RoleExists(role)){thrownewProviderException(String.Format("Therole'{0}'wasnotfound.",role));}}//Howtog

java - 如何使用 MongoDB Java 3 查询 "contains"?

我正在使用Java驱动程序3来处理MongoDB。我在一个集合中有以下文档。{"_id":ObjectId("59231945aefa1a301db180a1"),"username":"off","trx_type":"pair","amount":100000,"note":"testpair2:2"},{"_id":ObjectId("591d7a0b03c09b5142fb5602"),"amount":100000,"trx_type":"pair","note":"2:2","username":"ok"}我想查询这两条记录。如果我使用这个,从命令行:db.transact

node.js - 管理数据库中不断变化的数据

我需要一些关于如何在monogoDB中构建数据的建议。我有这个应用程序,用户可以在其中查看、添加、编辑和删除信用和借记交易。下面是数据的样子。这里的余额栏是动态的。例如,如果有人添加交易日期10-09-2017,则此后余额字段中的所有金额都需要在该时刻更改以反射(reflect)新交易。现在,我根本没有在数据库中保存这个余额字段,而是在每次用户加载页面、重新加载页面以及编辑、删除、添加事务时计算它。现在是快了,但我想,将来,当用户有很多事务时,它们会变慢,因为这些计算需要在用户显示数据表之前完成。有没有更有效的方法来做到这一点?此外,我在客户端进行计算,因此负载在客户端设备上,而不是在