标签: node-redis

NodeJS:我无法使用connect-redis工作

这是我的代码:

var express = require('express');
var RedisStore = require('connect-redis')(express);
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

  RedisStore.prototype.__proto__ = Store.prototype;
                                        ^
TypeError: Cannot read property 'prototype' of undefined
    at module.exports (/home/cherif/Bureau/Twimbee/server/gamma/node_modules/connect-redis/lib/connect-redis.js:96:41)
    at Object.<anonymous> (/home/cherif/Bureau/Twimbee/server/gamma/index.js:2:42)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3
Run Code Online (Sandbox Code Playgroud)

请帮忙

redis node.js express node-redis

4
推荐指数
1
解决办法
6940
查看次数

Redis队列在Node.js集群环境中

使用Node.js集群支持,我希望主进程生成添加到Redis队列的数据项.然后,我想运行多个读取Redis队列的工作进程.当然,只有一个工作进程应该使用从队列中检索的数据项.

为了让我开始,您能否建议在哪里查看Node包支持或原始Redis命令来实现此目的?让我强调消费者是Node.js集群环境中的独立进程,我们可以调整竞争从单个Redis队列读取的工作进程数,以调整整体系统性能.

redis node.js node-redis

4
推荐指数
1
解决办法
2150
查看次数

ioredis-Node JS 中的 Ping 命令

在我设置或获取密钥之前,有没有办法检查天气 redis 是否可用或由于某些问题而终止?我怎样才能做到这一点?

我正在使用ioredis模块。

redis node.js node-redis

4
推荐指数
1
解决办法
4079
查看次数

编写一个简单的 Node redis 循环的更好方法(使用 ioredis)?

所以,我很长一段时间都在学习其他语言的 JS/Node 方式。

我有一个从 redis 通道读取的微型微服务,将它临时存储在一个工作通道中,完成工作,删除它,然后继续前进。如果频道中有更多内容,它会立即重新运行。如果没有,它会设置超时并在 1 秒后再次检查。

它工作正常......但超时轮询似乎不是解决这个问题的“正确”方法。而且我还没有找到太多关于使用 BRPOPLPUSH 尝试阻止(与 RPOPLPUSH 相比)并在 Node 中等待...或其他类似选项的信息。(Pub/Sub 不是这里的一个选项......这是唯一的侦听器,它可能并不总是在侦听。)

这是我正在做的事情的简短本质:

var Redis = require('ioredis');
var redis = new Redis();

var redisLoop = function () {
    redis.rpoplpush('channel', 'channel-working').then(function (result) {
        if (result) {
            processJob(result); //do stuff

            //delete the item from the working channel, and check for another item
            redis.lrem('channel-working', 1, result).then(function (result) { });
            redisLoop();
        } else {
            //no items, wait 1 second and try again
            setTimeout(redisLoop, 1000);
        }
    });
};

redisLoop();
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些非常明显的东西。谢谢!

redis node.js node-redis

4
推荐指数
1
解决办法
1599
查看次数

一个 Redis 连接可以服务一千个并发用户吗?

上下文:我正在构建一个由 1000 个用户同时访问的应用程序,并使用 Redis 作为数据库。我正在使用node-redis客户端。我读到建议从应用程序的每个实例仅打开一个或几个连接,因为打开连接的成本很高。

问题:假设客户端向Redis发送一条命令。当应用程序需要发送另一个命令时,该命令正在传输到 Redis 或正在执行(本质上,未完成)。客户端是等待第一个命令完成,还是立即向 Redis 发送第二个命令?

这很重要,因为如果客户端等待,应用程序就无法真正充分利用异步,并且当来自一千个用户的命令尝试访问 Redis 时,网络调用将成为一个大瓶颈。最好这些命令已经在 Redis 中排队,而不是让它们在通过网络之前等待较早的命令完成。

谢谢!

redis node.js node-redis

4
推荐指数
1
解决办法
2862
查看次数

如何从 NestJS CacheManager 模块获取 redis io 客户端

我目前正在使用 NestJS 的缓存管理器模块,我想知道为什么我无法像这样获得 NodeRedis 客户端:

 constructor(
    @Inject(CACHE_MANAGER) private cacheManager: Cache,
  ) {
    cacheManager.store.getClient();
  }
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR in [...].controller.ts:24:24
TS2339: Property 'getClient' does not exist on type 'Store'.
    22 |     @Inject(CACHE_MANAGER) private cacheManager: Cache,
    23 |   ) {
  > 24 |     cacheManager.store.getClient();
       |                        ^^^^^^^^^
    25 |   }
Run Code Online (Sandbox Code Playgroud)

当我注册 CacheModule 时,我确实配置了cache-manager-redis-store,然后我想我可以获得客户端。

node-redis cachemanager nestjs

4
推荐指数
1
解决办法
6170
查看次数

createClient返回的类型是什么?

我是一个 TS 菜鸟,但一直在使用 TS 编写一些小型服务。我正在开发一个基于node-redis的 CLI 工具。很棒的 Redis 客户端。

client以下代码片段中的类型是什么?

import { createClient } from "redis";

let client; // what is type of `client`?

client = createClient();
Run Code Online (Sandbox Code Playgroud)

根据使用情况推断类型如下。有办法清理这个吗?提前致谢。

import { createClient, RedisClientType, RedisScripts } from "redis";

let client: RedisClientType<{ json: { ARRAPPEND: typeof import("@node-redis/json/dist/commands/ARRAPPEND"); arrAppend: typeof import("@node-redis/json/dist/commands/ARRAPPEND"); ARRINDEX: typeof import("@node-redis/json/dist/commands/ARRINDEX"); arrIndex: typeof import("@node-redis/json/dist/commands/ARRINDEX"); ARRINSERT: typeof import("@node-redis/json/dist/commands/ARRINSERT"); arrInsert: typeof import("@node-redis/json/dist/commands/ARRINSERT"); ARRLEN: typeof import("@node-redis/json/dist/commands/ARRLEN"); arrLen: typeof import("@node-redis/json/dist/commands/ARRLEN"); ARRPOP: typeof import("@node-redis/json/dist/commands/ARRPOP"); arrPop: typeof import("@node-redis/json/dist/commands/ARRPOP"); ARRTRIM: typeof import("@node-redis/json/dist/commands/ARRTRIM"); arrTrim: typeof import("@node-redis/json/dist/commands/ARRTRIM"); …
Run Code Online (Sandbox Code Playgroud)

node-redis typescript

4
推荐指数
1
解决办法
2318
查看次数

如何使用redis-scripto和redis DB在LUA中执行null \nil检查?

我正在使用scripto在node.js中编写脚本,我正在尝试对数据库中的值进行nil检查:这里是js代码(用于节点) -

var redis = require("redis");
var redisClient = redis.createClient("6379","localhost");
var Scripto = require('redis-scripto');
var scriptManager = new Scripto(redisClient);

var scripts = {
    'test':'local function test(i) '+
    'if (i==nil) then return i end '+
    'local ch = redis.call("get", i) '+
    'if (ch==nil) then return ("ch is nil") '+
    'else return "1" '+
    'end end '+
    'return (test(KEYS[1]))',
};

scriptManager.load(scripts);
scriptManager.run('test', ["someInvalidKey"], [], function(err,result){
    console.log(err || result);
});
Run Code Online (Sandbox Code Playgroud)

但在if语句中我无法进入"ch is nil" ...任何帮助?

null lua redis null-check node-redis

3
推荐指数
1
解决办法
5500
查看次数

与Redis群集的连接失败

我通过点击部署选项在Google compute Engine中设置了Redis群集.现在我想从我的节点js代码连接到这个redis服务器使用'ioredis'这里是我的代码连接到redis的单个实例

var Redis = require("ioredis");

var store = new Redis(6379, 'redis-ob0g');//to store the keys
var pub =   new Redis(6379, 'redis-ob0g');//to publish a message to all workers
var sub =   new Redis(6379, 'redis-ob0g');//to subscribe a message 

var onError = function (err) {
    console.log('fail to connect to redis ',err);
};
store.on('error',onError);
pub.on('error',onError);
sub.on('error',onError);
Run Code Online (Sandbox Code Playgroud)

它奏效了.现在我想连接到redis作为集群,所以我将代码更改为

/**
 * list of server in replica set
 * @type {{port: number, host: string}[]}
 */
var nodes =[
    {   port: port,    host: …
Run Code Online (Sandbox Code Playgroud)

cluster-computing redis node.js node-redis google-cloud-console

3
推荐指数
1
解决办法
3697
查看次数

Node-Redis:准备检查失败-需要NOAUTH身份验证

我有一个奇怪的redis行为:

const redis = require('redis');
const { REDIS_URL: redisUrl, REDIS_PASSWORD: redisPassword } = process.env;

const client = redis.createClient(redisUrl, {
  no_ready_check: true,
  auth_pass: redisPassword
});

client.on('connect', () => {
  redisPassword && client.auth(redisPassword);
});

client.on('error', err => {
  global.console.log(err.message)
});
Run Code Online (Sandbox Code Playgroud)

但是我一直都收到以下错误:

投掷者 //未处理的“错误”事件

ReplyError:准备检查失败:NOAUTH需要身份验证。

为什么不处理?我设置了 onerror处理程序,
为什么“就绪检查”失败了?我在选项中禁用了

redis node.js node-redis

3
推荐指数
1
解决办法
5830
查看次数