【问题标题】:Node JS, Redis and Heroku节点 JS、Redis 和 Heroku
【发布时间】:2018-09-03 00:02:30
【问题描述】:

我已经在我的应用程序npm install redis 中安装了redis 模块。在本地我可以连接到那个很好并像这样写到redis

var redis = require('redis');
if(process.env.NODE_ENV == 'production') {
  var r_client = redis.createClient(process.env.REDISCLOUD_URL);
} else {
  var r_client = redis.createClient();
}

function writeToRedis(tweet, screen_name){
  return new Promise((resolve, reject) => {
    r_client.hset(screen_name, 'tweet_id', tweet['id'], 'tweet_text', tweet['text'], 'avatar', tweet['user']['profile_image_url'], 'screen_name', tweet['user']['screen_name'], function (error, result) {
      if (error) {
        reject(error);
        return;
      }
      resolve(result);
    });
  });
}

当我部署到 Heroku 并尝试写入 redis(我已经安装了插件 Redis Cloud)时,我收到以下错误

(node:4) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReplyError: ERR wrong number of arguments for 'hset' command

除了 Redis Cloud 之外,我还应该使用其他插件还是我做错了什么?我很困惑,因为它在本地工作

谢谢

【问题讨论】:

  • 您是否尝试过传递单个键值而不是三个键值对?
  • 你必须同时对多个键和值使用 hmset
  • @varnit 啊是的......想知道为什么它在本地工作......这已经解决了......谢谢......我自己的错误没有正确阅读文档
  • 你在本地和heroku上使用不同的redis版本吗?
  • 我将评论作为答案发布,请将其标记为已解决,以便其他人可以从中受益

标签: node.js heroku redis


【解决方案1】:

redis中的hset函数一次只允许一个键值对

client.hset("hash key", "hashtest 1", "some value", callback);
client.hset(["hash key", "hashtest 2", "some other value"], callback);

改用 hmset

client.hmset(["key", "test keys 1", "test val 1", "test keys 2", "test val 2"], function (err, res) {});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2015-06-17
    • 2020-07-02
    • 2021-07-22
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多