node.js - Node JS、Redis 和 Heroku

标签 node.js heroku redis

我已经在我的应用程序 npm install redis 中安装了 redis 模块。在本地我可以连接到那个 fine 并像这样写入 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 之外,我还应该使用另一个插件吗?还是我做错了什么?我很困惑,因为它在本地工作

谢谢

最佳答案

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) {});

关于node.js - Node JS、Redis 和 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464420/

相关文章:

heroku - Go:部署在 Heroku 上

javascript - 高级字符串本地化

javascript - 将数组从 View 传递到 Controller

javascript - 单元测试数据库查询

ruby-on-rails - Heroku toolbelt 更新失败

Node.js & Redis & For Loop with bluebird Promises?

node.js - 如何使用 emscripten 通过 node.js 进行文件输入?

javascript - 如何使用 Angular Fullstack 部署 Throng 或 Cluster?

redis - 故障后如何重启redis集群节点

asp.net - asp.net core 1.0中如何使用redis作为消息队列?