问题标签 [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 回答
1014 浏览

node.js - Windows 上的 node.js 和 redis (hiredis)

我在使用 node.js 和 redis 但没有hiredis的聊天应用程序上使用该代码,因为我无法在Windows机器上安装它

但是 parseInt 方法也不起作用,remove-user 事件也不起作用..您对此有任何解释和解决方案吗?

0 投票
1 回答
243 浏览

javascript - 最快的手指优先应用程序架构 - Redis?

我正在使用智能手机作为蜂鸣器编写“最快的手指优先”Node.JS 应用程序。我打算使用 Socket.IO 来处理进入应用程序的答案,但不知道在回合结束时存储数据以进行比较的最佳方式是什么。

我最初的想法是将每个传入套接字事件的答案数据插入到 Redis 中,因为它是基于 RAM 的,我的假设是它会很快。但是,将每个答案依次推送到数组中会更好吗?这会在传入的套接字事件期间持续存在吗?

希望听起来简洁!

0 投票
0 回答
333 浏览

node.js - 带有 socket.io 和 redis 存储的 Nodejs express 应用程序 - 为什么有超过 1 个到 Redis 的连接

我有一个使用 Redis 进行会话存储的 express 应用程序(特别是 express.io - 一个结合 express 和 socket.io 以方便使用的存储库)。

在我的开发机器上,当我启动我的应用程序时,它似乎与 Redis 建立了多个 (7) 连接。为什么是这样?

在此处输入图像描述

更新:这是我从 redis-cli MONITOR 看到的输出 在此处输入图像描述

0 投票
3 回答
11867 浏览

javascript - 一个客户端的 Redis WATCH MULTI EXEC

我在 RedisOnGo + node_redis 上使用 NodeJS + Express + Redis 作为客户端。我希望有很多并发,所以尝试测试 WATCH。这个例子不包含 Express,只包含必要的东西。

预期结果:在 exec 回调中出现 N 个错误,最后得到“inc”变量 = 10-N。

意外结果:在 exec 回调中出现 0 个错误,但最终得到“inc”变量 = 1。

Watch 不适用于我的代码。

我发现这个线程redis 和 watch + multi 允许并发用户。他们说这是因为唯一的redis客户端。

然后我发现这个线程我应该为每个连接创建一个新的Redis客户端吗?. 他们说“绝对不推荐”为每笔交易生成一个新客户。我搞不清楚了。

另请注意,我必须对 Redis 服务器进行身份验证。提前致谢!

第 1 版:

通过在每次 WATCH-MULTI-EXEC 迭代之前创建一个新的客户端连接,我能够使用本地 Redis 实例(因此我不使用 client.auth)使其工作。虽然不确定它是否好,但现在结果是 100% 准确的。

版本2 如果我在每次 WATCH-MULTI-EXEC 迭代之前创建一个新的客户端连接,然后执行 client.auth 并等待 client.on,它就可以工作。

问题仍然存在,我可以为每次迭代创建新的客户端连接吗?

0 投票
1 回答
4362 浏览

redis - 仅当尚未设置时才设置原子

有没有办法只在 Redis 中尚未设置时才进行原子集?

具体来说,我正在创建一个像“myapp:user:user_email”这样的用户,如果“user_email”已经被占用,我希望 Redis 给我一个错误,而不是默默地替换旧值。像声明,而不是替换。

0 投票
2 回答
1980 浏览

node.js - 如何从redis存储客户端的键/值对中的值中获取键?

我将用户名/SocketID 对存储在我的 socket.io 聊天应用程序的 redis 存储中。

当用户断开连接时,我需要从 redis 存储中删除用户名/socketID 对。我已经看到了如何从键中获取值,但从来没有从值中获取键。是否可以?或者无论哪种方式,我如何才能从值中删除键/值对。这是我的代码

用于在连接时添加到存储

对于断开连接,客户端不知道何时会发生断开连接,这可能是由于失去互联网连接而发生的,但是当套接字断开连接时,它总是会触发“断开连接”事件。在这种情况下,我需要删除用户名/socketID 对。

0 投票
3 回答
7772 浏览

node.js - 如何(重新)在 nodejs/express 中使用 redis 客户端连接?

举一个简单的例子:

不需要为每个请求重新建立 Redis 连接,是吗?

需要使用redis连接池吗?

0 投票
1 回答
648 浏览

heroku - socket.io RedisStore 可以在 heroku 上运行吗?

我似乎无法让 socket.io RedisStore 在 heroku 上工作。我能够连接到 RedisToGo,但是当我打电话时new RedisStore(),如果我没有提供 RedisToGo 连接的密码,我会收到错误,例如:Error: Ready check failed: ERR operation not permitted

我的配置:

Heroku 的错误日志:

2013-04-30T19:38:30.070457+00:00 heroku[web.1]: Starting process with command 'node app.js' 2013-04-30T19:38:30.917568+00:00 app[web.1]: info: socket.io started 2013-04-30T19:38:31.002714+00:00 app[web.1]: client ERR: null 2013-04-30T19:38:31.009598+00:00 app[web.1]: 2013-04-30T19:38:31.010050+00:00 app[web.1]: /app/node_modules/socket.io/node_modules/redis/index.js:506 2013-04-30T19:38:31.003255+00:00 app[web.1]: pub ERR: null 2013-04-30T19:38:31.001801+00:00 app[web.1]: sub ERR: null 2013-04-30T19:38:31.010729+00:00 app[web.1]: throw callback_err; 2013-04-30T19:38:31.011043+00:00 app[web.1]: ^ 2013-04-30T19:38:31.015164+00:00 app[web.1]: at Command.callback (/app/node_modules/socket.io/node_modules/redis/index.js:367:14) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at RedisClient.return_error (/app/node_modules/socket.io/node_modules/redis/index.js:502:25) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at RedisClient.on_info_cmd (/app/node_modules/socket.io/node_modules/redis/index.js:319:35) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at RedisReplyParser.send_error (/app/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js:266:14) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at Socket.<anonymous> (/app/node_modules/socket.io/node_modules/redis/index.js:79:14) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at RedisClient.on_data (/app/node_modules/socket.io/node_modules/redis/index.js:478:27) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at RedisReplyParser.execute (/app/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js:125:22) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at RedisReplyParser.<anonymous> (/app/node_modules/socket.io/node_modules/redis/index.js:262:14) 2013-04-30T19:38:31.015164+00:00 app[web.1]: Error: Ready check failed: ERR operation not permitted 2013-04-30T19:38:31.015476+00:00 app[web.1]: at Socket.EventEmitter.emit (events.js:95:17) 2013-04-30T19:38:31.015164+00:00 app[web.1]: at RedisReplyParser.EventEmitter.emit (events.js:95:17) 2013-04-30T19:38:32.242663+00:00 heroku[web.1]: Process exited with status 8 2013-04-30T19:38:32.257231+00:00 heroku[web.1]: State changed from starting to crashed

0 投票
1 回答
6162 浏览

node.js - Node Redis:如何过滤一组排序的键并在一次调用中检索每个键的哈希值

我正在使用node_redis在 node.js 中使用 redis 数据库。这是一个类似于我正在使用的结构的快速示例。

现在假设我想获取组中 18 岁以上用户的所有用户数据:1

我知道我可以通过调用来获取用户密钥

我迷路的地方是如何一次获取所有用户对象?更进一步,是否可以一次调用 zrangebyscore 并获取所有用户对象?

0 投票
1 回答
4488 浏览

javascript - 从redis获取密钥列表?

我有部分具有相同约定的较大哈希集:

导致...的console.log

我不明白发生了什么,任何帮助表示赞赏。