标签: node-redis

如何将javascript数组保存为redis列表

以下代码将整个数组保存为redis列表中的单个值.但我想单独保存数组值.我该怎么做?

PS很抱歉英语不好.

var redis = require('redis'),
    client = redis.createClient();

var arr = [1,2,3];

client.rpush('testlist',arr);
Run Code Online (Sandbox Code Playgroud)

javascript redis node.js node-redis

8
推荐指数
2
解决办法
1万
查看次数

Node.js:关闭时关闭所有Redis客户端

今天,我将Redis集成到我的node.js应用程序中,并将其用作会话存储。基本上,在身份验证成功后,我会将相应的用户对象存储在Redis中。

身份验证后收到HTTP请求时,我尝试使用哈希从Redis检索用户对象。如果检索成功,则意味着用户已登录并且可以满足请求。

将用户对象存储在Redis中和进行检索的操作发生在两个不同的文件中,因此每个文件中都有一个Redis客户端。

问题1:可以有两个Redis客户端,每个文件一个吗?还是应该仅实例化一个客户端,并在应用程序的所有区域中使用它?

问题2:node-redis库是否提供一种显示已连接客户端列表的方法?如果是这样,我将能够遍历该列表,并在服务器关闭时为它们中的每一个调用client.quit()。

顺便说一下,这就是我实现服务器“正常关机”的方式:

//Gracefully shutdown and perform clean-up when kill signal is received
process.on('SIGINT', cleanup);
process.on('SIGTERM', cleanup);

function cleanup() {
    server.stop(function() {
        //todo: quit all connected redis clients

        console.log('Server stopped.');

        //exit the process
        process.exit();
    });
};
Run Code Online (Sandbox Code Playgroud)

javascript redis node.js node-redis

8
推荐指数
1
解决办法
1271
查看次数

即使服务器已启动并运行,Node Redis 也无法在我的 Windows 计算机上运行

const express = require("express");
const redis = require("redis");
const app = express();

const client = redis.createClient({
  url: "redis://admin123@ec2-35-182-15-126.ca-central-1.compute.amazonaws.com",
});

client.on("connect", function () {
  console.log("redis connected");
  console.log(`connected ${redisClient.connected}`);
});

client.on("error", (err) => {
  console.log(err);
});

app.listen(process.env.PORT || 3000, () => {
  console.log("Node server started");
});
Run Code Online (Sandbox Code Playgroud)

即使我已经通过使用 Redsmin 连接检查了 EC2 redis 实例,上面的代码也没有显示与 redis 服务器的任何连接。 Redsmin 中的托管详细信息

这是一件非常简单的事情,但我得到的错误无法通过谷歌搜索。

节点服务器已启动 C:\Users\Sithira_105661\Desktop\Projects\Learning\Redis\node_modules@node-redis\client\dist\lib\client\index.js:387 return Promise.reject(newErrors_1.ClientClosedError()); ^

ClientClosedError:客户端在 Commander._RedisClient_sendCommand (C:\Users\Sithira_105661\Desktop\Projects\Learning\Redis\node_modules@node-redis\client\dist\lib\client\index.js:387:31) 处关闭。 .commandsExecutor (C:\Users\Sithira_105661\Desktop\Projects\Learning\Redis\node_modules@node-redis\client\dist\lib\client\index.js:160:154) 位于 Commander.BaseClass。[设置] (C:\Users\Sithira_105661\Desktop\Projects\Learning\Redis\node_modules@node-redis\client\dist\lib\commander.js:8:29) 在对象处。(C:\Users\Sithira_105661\Desktop\Projects\Learning\Redis\redis.js:19:8) 在 Module._compile (node:internal/modules/cjs/loader:1101:14) 在 Object.Module._extensions。 .js(节点:内部/模块/cjs/loader:1153:10)在Module.load(节点:内部/模块/cjs/loader:981:32)在Function.Module._load(节点:内部/模块/cjs) /loader:822:12) 在 Function.executeUserEntryPoint [作为 …

windows redis node.js node-redis

8
推荐指数
3
解决办法
2万
查看次数

如何获取List Redis中最新元素的索引?

如何获取List Redis中最新元素的索引?例如,在List存储的消息 ID 中,我需要获取last ID消息并返回index此元素。

redis node-redis

7
推荐指数
1
解决办法
8798
查看次数

使用node-redis删除redis中的键数组

我有像["aaa","bbb","ccc"]这样的键数组,所以我想使用一个命令从redis中删除所有这些键.我不想使用循环迭代.我读了关于redis命令DEL和在终端redis-client上它可以工作但是使用nodejs它不起作用

Redisclient.del(tokenKeys,function(err,count){
             Logger.info("count is ",count)
             Logger.error("err is ",err)

         })
Run Code Online (Sandbox Code Playgroud)

其中tokenKeys = ["aaa","bbb","ccc"],如果我发送一个像tokenKeys ="aaa"这样的密钥,这个代码就可以工作了

redis node.js node-redis

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

了解网络缓存 (Redis)

我正在开发一个从 API 提供程序接收数据的网络应用程序。现在我需要一种方法来缓存数据,以防止再次为相同的数据调用提供程序。

然后我偶然发现了 Redis,它似乎符合我的目的,但我不是 100% 清楚使用 Redis 缓存的概念。我检查了他们的文档,但我并没有真正遵循他们所说的。

假设我刚刚部署了我的网站,我的第一个访问者叫做 A。由于 A 是第一个访问的人,我的网站将通过 API 提供者请求一组新数据,几秒钟后,页面将加载了 A 想要的数据。

我的网站将此数据缓存到 Redis 以服务将来访问同一页面的访问者。

现在我有我的第二个访客 B。

B 访问与 A 相同的页面 url,并且因为我的网站将此数据存储在缓存中,所以 B 是从缓存中提供的,并且加载时间将比 A 经历的加载时间快得多。

我的理解是否符合网络缓存的概念?

我一直认为根据用户进行缓存,因此我在网站上的交互对其他人没有影响或没有任何影响,但 Redis 似乎在每个应用程序的基础上工作。

caching redis node-redis

7
推荐指数
1
解决办法
1726
查看次数

Redis与redis.abc.abc的连接失败-写入EPIPE

无法从NodeJS连接到Redis,出现以下错误。 Redis connection to redis.abc.abc failed - write EPIPE

使用v0.10.35 NodeJS 版本的node_redis模块0.12.1和Redis DB版本3.0.4

当前,NodeJS服务器每分钟处理大约5万个请求,每个请求在Redis(GET / SET)中至少进行2次操作。

它可以正常工作一段时间(大约30分钟),然后开始抛出该错误。有没有解决的办法?

redis node.js node-redis

7
推荐指数
0
解决办法
681
查看次数

在Centos上运行Redis的多个实例

我想在Centos 7上运行Redis的多个实例.任何人都可以指向我正确的链接或在此处发布步骤.

我用谷歌搜索信息,但我没有找到任何相关信息.

redis node-redis stackexchange.redis redis-server

7
推荐指数
1
解决办法
4693
查看次数

Node.js:Jest + redis.quit()但是打开句柄警告仍然存在

我正在尝试使用redis和jest运行集成测试.

它始终抛出"Jest检测到以下1个打开的句柄可能使Jest退出:"与--detectOpenHandles一起运行时出错.

它没有挂起,因此套接字正在关闭,但是如何编写它以便它不会抛出该警告?

我的代码

import redis from 'redis';
let red: redis.RedisClient;

beforeAll(() => {
    red = redis.createClient();
});

afterAll((done) => {
    red.quit(() => {
        done();
    });
});

test('redis', (done) => {
    red.set('a', 'b', (err, data) => {
        console.log(err);
        red.get('a', (err, data) => {
            console.log(data);
            done();
        });
    });

});
Run Code Online (Sandbox Code Playgroud)

警告

Jest has detected the following 1 open handle potentially keeping Jest from exiting:

?  TCPWRAP

    3 |
    4 | beforeAll(() => {
    > 5 |     red = redis.createClient();
        |                 ^
    6 …
Run Code Online (Sandbox Code Playgroud)

node.js node-redis jestjs

7
推荐指数
1
解决办法
726
查看次数

模块“redis”没有导出成员“RedisClient”

我正在使用 Typescript 创建多节点 Express/Socket.io 服务器,并且尝试从 redis 导入 RedisClient,但我无法让它工作,因为我收到错误

模块“redis”没有导出成员“RedisClient”

它似乎正在尝试检索它的形式

节点模块/redis/dist/索引

但实际上它在这里:

节点模块/@类型/redis"

我怎样才能让它从正确的地方导入?

redis express socket.io node-redis

7
推荐指数
1
解决办法
6347
查看次数