问题标签 [node-redis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1277 浏览

javascript - 正确嵌套 Redis 回调

我正在编写一个 node.js 程序,它接收 snmp 陷阱并将它们存储在 redis 哈希数据库中。我用 Node.js 编程的时间不长,而且我认为我没有完全理解我的代码是如何执行的。

我觉得我的一些 redis 调用比其他调用更早完成,这就是为什么我尝试将所有内容嵌套在它们的回调函数中,但我担心我没有以正确的方式这样做。

我的输出看起来已经接近我想要实现的目标,但是会弹出一些随机问题,例如我的第一个陷阱为 1,下一次为 11 或 111。我所做的只是client.incr对整数执行 redis 函数。

简单地说,我使用两个哈希键来跟踪我收到的当前和过去的陷阱。我将两个数字生成和哈希数作为单独的整数键值跟踪,并根据需要递增它们。这两个数字用于在当前和过去的陷阱哈希中创建和访问值。

这是我的代码。

这是我当前的一些输出。

这是我的一些历史输出。

0 投票
2 回答
3322 浏览

javascript - 使用 Redis 扩展 Socket.IO,然后扩展 Redis 本身

在使用 Node.js 和 socket.io 一段时间后,我明白如果我希望我的应用程序支持多达 100 万并发用户,我需要对其进行扩展,所以我开始使用 Redis 来处理PUB/SUB套接字之间的消息并运行大量套接字.io 服务器实例,在同一台机器和其他机器上,但我所有的 socket.io 服务器都使用同一个 Redis 服务器。

这让我想:有什么意义?我是否需要更多的 redis 服务器并在它们之间进行扩展?我的观点是,他们将永远是顶级服务器的瓶颈。

我的问题是,是否可以扩展 Redis?如果是的话,我所有连接到不同 socket.io 服务器的套接字如何能够在 Redis 服务器之间进行 PUB/SUB?

0 投票
3 回答
966 浏览

redis - Redis 中的“归档”发布/订阅消息

我正在使用 Redis 的发布/订阅功能。因此,服务器发布 10 个项目,然后客户端获取这 10 个项目。

但是,现在有一个新客户订阅了该提要。我希望他们得到之前的 10 件物品以及任何新物品。

Redis 是否有办法使用发布和订阅功能来做到这一点?提要历史记录是否存储在数据库中的任何位置?有没有一种简单的方法可以做到这一点?将消息存储在列表中并让客户端在LRANGE my_list 0 10列表中执行的最佳方法是什么?

0 投票
2 回答
1896 浏览

node.js - ExpressJS:redis 宕机了怎么办?

有问题的代码:app.js

我正在尝试使用node_redis从我的 node.js 应用程序连接到 Redis。但是,我不太确定如何处理 Redis 宕机的情况。

我有一堆client.on('error', function(err) {})'s 但他们似乎从未被调用过。这是处理它的正确方法吗?我叫错了吗?

我刚开始使用redis/node/express,所以请原谅我的无知。

编辑正如 Vadim 帮助我意识到的那样,似乎我实际上client.on('error')在 app.js 中正确地捕捉到了错误。但是,当 redis 关闭时,我的路由无法捕获错误。

0 投票
1 回答
1393 浏览

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

我有一个问题,EXEC 的回调随机返回一些值作为nulls.

该代码在大多数情况下都可以正常工作,但是它会随机失败(或者如果我反复刷新浏览器)...

这是代码减少到失败的程度:

当它工作正常时, exec 回调将返回:

当它不起作用时,它会返回:(注意null值)

0 投票
1 回答
2817 浏览

node.js - 使用 node_redis 时如何访问传递给 hgetall 的密钥?

我有一个 node.js (express) 应用程序,我正在使用 node_redis 从我的 redis 数据库中获取所有用户。

这会产生以下结果:

现在我希望将 user_id 添加到用户结果中,这样我可以获得以下输出:

我遇到的问题是client.hgetall()被异步调用,我不能简单地访问 for 循环中的 user_id。

0 投票
2 回答
312 浏览

node.js - node.js Redis 包更新是否会清除 Redis 数据库?

我最近更新了我的 node.js Redis 包。现在我的数据似乎消失了。更新会删除我的所有数据吗?

0 投票
3 回答
7909 浏览

node.js - 快速更新 cookie 会话未向浏览器注册

我已经设置了一个有效的登录测试,如下所示:

路由和用户逻辑被省略,因为我认为它们与我的问题无关,但如果需要,我会很乐意分享它们(它们非常小,这只是为了获得一个小的概念证明并运行) .

登录工作,阅读会话工作,基于会话值呈现模板工作。 我的问题是 maxAge/expires。我不确定问题出在哪里,但我会尝试描述它:

当我登录时,会话保存passport.js,正确存储在 myRedisStore中,指向会话的 cookie 返回到浏览器。在后续请求中,cookie 被成功找到并指向来自 my 的正确会话SessionStorereq.session.cookie显示更新expires,在我的redis服务器中,TTL 重置为 10 分钟 (600)。

我的问题是 cookie 在浏览器(Chrome、Windows 和 Mac)中保持相同的过期时间。

所以我的问题是:如何进一步调试?随着 req.session 的更新(由express和内部/自动),我想知道问题出在哪里,以及我应该做些什么来解决这个问题:passportCookie保持在初始 maxAges/expiresconnect-redis

非常感谢任何提示、指示或想法。

0 投票
1 回答
197 浏览

node.js - node_redis hgetall 回调函数上的 Coffeescript 变量范围

我有以下代码:

无论我做什么,我都无法在 getLeagueInfo 中访问 LeagueId 或 userLeagueId。它在外部包装器中工作正常,但我无法在回调函数中访问它。

我究竟做错了什么?

谢谢您的帮助。

[编辑] 有没有办法通过对回调的 hgetall 调用将它作为参数传递给函数?

弗雷德

0 投票
1 回答
1215 浏览

node.js - 无法读取 node_redis hgetall 函数中未定义的属性“长度”

我有以下代码生成错误:

我已经验证密钥是正确的,并且 getLeagueInfo 以正确的返回值正确执行,但在两者之间我得到了无法读取未定义的属性“长度”。调试说它在 hgetall 中。

我在 node_redis 中打开了调试消息

所以错误发生在发送请求并得到结果之后。

知道什么可能导致错误,或者是调试它的最佳方法吗?