标签: node-redis

使用node-redis获取多个密钥

我正试图从redis实例中获取一堆密钥.我正在使用node-redis.我正在使用循环:

for( var i=1; i<=num; ++i ){
    client.get(key + ':' + num, function (err, reply) {
        obj[num] = reply;
    });
}
return obj;
Run Code Online (Sandbox Code Playgroud)

但是obj只是未定义.我觉得我可能遇到问题,因为get显然是异步调用.还有另一种方法来实现这一目标吗?我应该只将值存储在有序集中吗?

javascript asynchronous redis node.js node-redis

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

redis.lindex()返回true而不是索引处的值

我有一个现有的键值列表:key value1 value2.

redis-cli,我跑LRANGE key 0 -1,返回:

1) value1
2) value2
Run Code Online (Sandbox Code Playgroud)

这确认了键值列表存在.在redis-cli,运行LINDEX key 0返回:

"value1"
Run Code Online (Sandbox Code Playgroud)

但是,在我的节点应用程序中,当我执行时console.log(redis.lindex('key', 0)),它会打印true而不是索引处的值.

我究竟做错了什么?

注意:我正在使用该node-redis包.

redis node.js node-redis

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

DECR后如何重置Redis中的键增量?

如何将Redis中的key增量重置为零?在文档中没有找到命令

redis node-redis

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

Redis:多个键与更大的值

我是 redis 新手,有以下问题。对于我的应用程序来说,拥有多个具有较小值的键或具有较大值的单个键会更好吗?举个例子,我们可以有一个包含球队的足球联赛,在每个球队中我们存储球员。我们可以有类似的东西

(key) premier_league  
(value) {MANU : [manu_player1,....,manu_player25], ...., MAN_CITY : [man_city_player1,....,man_city_player25]}
Run Code Online (Sandbox Code Playgroud)

或者类似的东西

premier_league:MANU --> {players:[manu_player1,....,manu_player25]}
premier_league:MAN_CITY --> {players:[man_city_player1,....,man_city_player25]}
Run Code Online (Sandbox Code Playgroud)

nosql redis node-redis

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

Redis 客户端 - on('ready') 事件

我正在使用 Node.js 的 Redis NPM 库 - 我可以像这样监听连接“就绪”事件

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

client.on('ready', function () {
    client.keys('*', function (err, keys) {
        if (err) {
            log.error(err);
        } else {
            for (var i = 0; i < keys.length; i++) {
                createLocalDataMap(keys[i]);
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

但是,我如何查询 Redis 来查看它是否已准备好,而不是侦听在我准备好处理它之前可能会触发的事件?

我想我可以放弃就绪事件,只进行查询,然后等待响应,但是有没有更好、更安全、更复杂的方法呢?

换句话说,我很可能必须编写这样的函数:

var isReady = false;

client.on('ready', function(){

      isReady = true;
});

function doSomethingMuchLater(){

if(isReady){

     //query redis as normal
}
else {

   client.on('ready', function(){
   isReady = true;
     //now I do what I wanted to …
Run Code Online (Sandbox Code Playgroud)

redis node.js node-redis

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

RedisStore 忽略主机和端口字段

我正在使用expressconnect-redis让服务器使用 Redis 进行会话。

import Session from 'express-session';
const session = Session({
  resave: true,
  saveUninitialized: true,
  key: '...', 
  secret: '...',
  store: initializeRedis(Session);
});
Run Code Online (Sandbox Code Playgroud)

redis 初始值设定项如下所示:

import { createClient as createRedisClient } from 'redis';
import connectRedis from 'connect-redis';

export default function initializeRedis(Session) {
  const redisClient = createRedisClient();
  const RedisStore = connectRedis(Session);
  return new RedisStore({
    host: 'redis',
    port: 6378,
  });
}
Run Code Online (Sandbox Code Playgroud)

根据前面的选项参数,服务器应该通过端口而不是redis默认的连接到而不是默认的127.0.0.163786379

但是,无论这些值等于什么,我总是得到相同的输出:

错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379

我在配置过程中遗漏了什么吗?

node.js express node-redis

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

可以设置redis pub/sub消息的过期时间

我想在发布时设置 Redis 发布/订阅消息的过期时间。我如何在nodeJS中做到这一点?

var redis = require('redis');

redis.createClient().publish('some channel', 'some message', function(err) {  
  if (err) {
    console.error('error publishing:', err);
  }
});
Run Code Online (Sandbox Code Playgroud)

发布消息的代码如上。我必须做哪些更改才能设置已发布消息的到期时间。

publish-subscribe redis node.js node-redis

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

StackExcange.Redis.RedisTimeoutException

我们在使用 Redis 的应用程序中遇到超时问题。已经调查过但没有成功。请参阅下面的超时错误:

StackExchange.Redis.RedisTimeoutException: Timeout performing GET 
USERORGANIZATIONS_D96510A4-A9A2-4DAA-84A9-BB77363DD3EA, inst: 9, mgr: 
ProcessReadQueue, err: never, queue: 24, qu: 0, qs: 24, qc: 0, wr: 1, wq: 1,
in: 65536, ar: 1, clientName: RD00155D008B42, serverEndpoint: 
Unspecified/xxxxxxx.redis.cache.windows.net:xxxx, keyHashSlot: 9735, IOCP: 
(Busy=0,Free=1000,Min=4,Max=1000), WORKER: 
(Busy=27,Free=32740,Min=200,Max=32767) (Please take a look at this article 
for some common client-side issues that can cause timeouts: 
http://stackexchange.github.io/StackExchange.Redis/Timeouts)
Run Code Online (Sandbox Code Playgroud)

如果需要更多信息,请询问我,我会尽力提供。提前致谢。

redis node-redis stackexchange.redis redis-server

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

如何解析Redis AOF文件?

我试图了解 Redis AOF 文件是如何工作的,并且可能会根据一些简单的 Redis AOF 文件编写一个解析器。现在我通过在 Redis 中执行这些命令生成了一个 AOF 文件:

SET firstkey firstvalue
SET secondkey secondvalue
Run Code Online (Sandbox Code Playgroud)

生成的 AOF 文件如下所示:

*2
$6
SELECT
$1
0
*3
$3
SET
$8
firstkey
$10
firstvalue
*3
$3
SET
$9
secondkey
$11
secondvalue
Run Code Online (Sandbox Code Playgroud)

我可以看到像firstkey,firstvalue和SET等,但我的关键字不太明白休息,espcially这些数字都是什么喜欢*2$6手段,他们在Redis的尝试读取AOF文件,并重建数据库是如何工作的。我在网上也找不到任何文件格式的文档,因此感谢您的帮助!

database redis node-redis

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

Redis:错误的“auth”命令参数数量

我正在使用redisnodejs。版本:"redis": "^3.1.2"

当我的服务器连接到 redis 时,出现以下错误:

ERR wrong number of arguments for 'auth' command
Run Code Online (Sandbox Code Playgroud)

我猜它与 URL 有关系,它看起来像这样:

redis://h:<password>@<url>:<port>
Run Code Online (Sandbox Code Playgroud)

我的 redis 由 Heroku 托管,我无法更改 URL。并且不知道我怎样才能让它工作。非常感谢任何想法/解决方案。

redis node.js node-redis

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