草庐IT

Asynchronous

全部标签

asynchronous - 有没有办法在 Redis 中获取锁? ( Node .js)

我的Node.js应用程序接受来自外部的连接。每个连接处理程序读取Redis上的一个SET,最终修改该集合本身,然后继续。问题是与此同时,另一个异步连接可以尝试读取同一个SET并尝试更新它或根据读取的内容决定下一步。我知道Redis尽最大努力实现原子性,但这对我的用例来说还不够。想一想:读取集合以了解它是否已满(有一个业务规则)。如果它已满,则会发生一些事情。问题是如果只剩下一个插槽,两个半并发连接可能认为每个都是最后一个。我溢出了。我有办法让连接“等待”很短的时间,而另一个最终需要更新设置状态吗?我认为这是一个极端情况,非常非常不幸......但你知道:)使用另一把key作为“锁”是

asynchronous - 有没有办法在 Redis 中获取锁? ( Node .js)

我的Node.js应用程序接受来自外部的连接。每个连接处理程序读取Redis上的一个SET,最终修改该集合本身,然后继续。问题是与此同时,另一个异步连接可以尝试读取同一个SET并尝试更新它或根据读取的内容决定下一步。我知道Redis尽最大努力实现原子性,但这对我的用例来说还不够。想一想:读取集合以了解它是否已满(有一个业务规则)。如果它已满,则会发生一些事情。问题是如果只剩下一个插槽,两个半并发连接可能认为每个都是最后一个。我溢出了。我有办法让连接“等待”很短的时间,而另一个最终需要更新设置状态吗?我认为这是一个极端情况,非常非常不幸......但你知道:)使用另一把key作为“锁”是

node.js - 带有nodejs异步请求的redis中的for循环

我遇到了redis和nodejs的问题。我必须遍历电话号码列表,并检查这个号码是否存在于我的redis数据库中。这是我的代码:functiongetContactList(contacts,callback){varcontactList={};for(vari=0;i“之后”控制台日志出现在“之前”控制台日志之前,回调总是返回一个空的contactList。这是因为如果我理解得很好,对redis的请求是异步的。但问题是我不知道如何让它发挥作用。我该怎么办? 最佳答案 您有两个主要问题。您的phoneNumber变量将不是您想要的。

node.js - 带有nodejs异步请求的redis中的for循环

我遇到了redis和nodejs的问题。我必须遍历电话号码列表,并检查这个号码是否存在于我的redis数据库中。这是我的代码:functiongetContactList(contacts,callback){varcontactList={};for(vari=0;i“之后”控制台日志出现在“之前”控制台日志之前,回调总是返回一个空的contactList。这是因为如果我理解得很好,对redis的请求是异步的。但问题是我不知道如何让它发挥作用。我该怎么办? 最佳答案 您有两个主要问题。您的phoneNumber变量将不是您想要的。

node.js - 在 Node.js 中,我如何使用集合作为索引以编程方式从 Redis 数据库中检索许多哈希

我的redis数据库中每个用户都有一大堆字段,我希望能够检索他们的所有记录并显示它们。我这样做的方法是存储一组所有userids,当我想要他们的所有记录时,我递归地迭代该集合,使用集合中的userids获取他们的记录并将它们添加到全局数组,然后最后返回这个全局数组。无论如何,我不是特别喜欢这种方法,并且想听听一些替代方案的建议,我觉得node.js或redis中必须有更好的功能来解决这个问题。也许有一种方法可以完全避免使用该集合,但环顾四周我看不到任何明显的东西。这是我的伪(非常完整)node.js代码的示例,请注意设置大小不是问题,因为它很少会>15。注册函数:varregister

node.js - 在 Node.js 中,我如何使用集合作为索引以编程方式从 Redis 数据库中检索许多哈希

我的redis数据库中每个用户都有一大堆字段,我希望能够检索他们的所有记录并显示它们。我这样做的方法是存储一组所有userids,当我想要他们的所有记录时,我递归地迭代该集合,使用集合中的userids获取他们的记录并将它们添加到全局数组,然后最后返回这个全局数组。无论如何,我不是特别喜欢这种方法,并且想听听一些替代方案的建议,我觉得node.js或redis中必须有更好的功能来解决这个问题。也许有一种方法可以完全避免使用该集合,但环顾四周我看不到任何明显的东西。这是我的伪(非常完整)node.js代码的示例,请注意设置大小不是问题,因为它很少会>15。注册函数:varregister

javascript - 异步 redis 和 promise

我有一个场景,我必须运行一个循环,每次迭代调用redisset函数(异步),然后我必须关闭与redis的连接。序列...运行foreach循环。对每个元素使用redisset命令。循环完成后,关闭redis连接。现在,在for循环内完成所有设置操作之前,redis连接将被关闭。其他详细信息...我正在使用node.jsredisclient.我知道为什么会这样,但我不确定如何解决这种情况。我是NodeJS的新手。 最佳答案 您不需要绕过结构-node.jsclient支持开箱即用的技术。查看Multi.execCommandsare

javascript - 异步 redis 和 promise

我有一个场景,我必须运行一个循环,每次迭代调用redisset函数(异步),然后我必须关闭与redis的连接。序列...运行foreach循环。对每个元素使用redisset命令。循环完成后,关闭redis连接。现在,在for循环内完成所有设置操作之前,redis连接将被关闭。其他详细信息...我正在使用node.jsredisclient.我知道为什么会这样,但我不确定如何解决这种情况。我是NodeJS的新手。 最佳答案 您不需要绕过结构-node.jsclient支持开箱即用的技术。查看Multi.execCommandsare

javascript - 如何在数据库响应之前延迟函数返回值?

这个问题在这里已经有了答案:HowdoIreturntheresponsefromanasynchronouscall?(44个答案)关闭4年前。我有一个函数可以根据数据库的响应修改变量。functionf(){letx={};redis.get("key1").then(value=>x.prop1=value);redis.get("key2").then(value=>x.prop2=value);returnx;}这是我的粗略代码。它实际上是在一个for循环中,使用node-redis。我多次调用Redis。我将Redis中的数据添加到一个新对象并返回该对象。问题:函数f()每

javascript - 如何在数据库响应之前延迟函数返回值?

这个问题在这里已经有了答案:HowdoIreturntheresponsefromanasynchronouscall?(44个答案)关闭4年前。我有一个函数可以根据数据库的响应修改变量。functionf(){letx={};redis.get("key1").then(value=>x.prop1=value);redis.get("key2").then(value=>x.prop2=value);returnx;}这是我的粗略代码。它实际上是在一个for循环中,使用node-redis。我多次调用Redis。我将Redis中的数据添加到一个新对象并返回该对象。问题:函数f()每