因此,我有一个使用tunnel-ssh和redis npm软件包的脚本。问题是我认为我已正确完成所有操作,但仍然无法显示某些数据。它说通过隧道和redis完成连接。
const tunnel = require('tunnel-ssh');
const fs = require('fs');
const redis = require('redis');
let config = {
username: username,
dstPort: 6379,
localPort: 6379,
dstHost: host.myjob.com,
host: host.myjob.com',
privateKey: require('fs').readFileSync('private_key.pem')
// passpharse: 'secret',
// keepAlive: true
};
var server = tunnel(config, function(error,server){
console.log("SSH connection successfully done.");
var client = redis.createClient();
//console.log(client);
client.select(2, function() {
client.on('connect', function() {
console.log('connected');
});
client.hgetall('product', function(err, reply) {
console.log(reply);
});
});
});
server.on('error', function(err){
console.error('Something bad happened:', err);
});
我收到的唯一控制台消息是“ SSH连接成功完成”,我实际上不知道为什么。顺便说一句,这是我与Redis合作的第一个方法,所以我真的不明白。
请帮助!
答案 0 :(得分:0)
请使用async-redis
模块
并运行此代码,它对我有用
const tunnel = require('tunnel-ssh');
const fs = require('fs');
const redis = require("async-redis");
var client = redis.createClient({
host: "127.0.0.1", //host name
db: 2, //redis db
});
let config = {
username: username,
dstPort: 6379,
localPort: 6379,
dstHost: host.myjob.com,
host: host.myjob.com',
privateKey: require('fs').readFileSync('private_key.pem')
// passpharse: 'secret',
// keepAlive: true
};
var server = tunnel(config,async function(error,server){
console.log("SSH connection successfully done.");
let reply = await client.hgetall("tgju_open_price_13990509")
console.log(reply)
});
server.on('error', function(err){
console.error('Something bad happened:', err);
});