const Redis = require("ioredis");
const fs = require("fs");
const path = require("path");
function loadEnv() {
const envPath = path.join(__dirname, ".env");
if (fs.existsSync(envPath)) {
const envContent = fs.readFileSync(envPath, "utf8");
envContent.split("\n").forEach((line) => {
const trimmed = line.trim();
if (trimmed && !trimmed.startsWith("#")) {
const [key, ...valueParts] = trimmed.split("=");
if (key && valueParts.length > 0) {
const value = valueParts.join("=").trim().replace(/^["']|["']$/g, "");
process.env[key.trim()] = value;
}
}
});
}
}
loadEnv();
async function main() {
const config = {
host: process.env.REDIS_HOST || "127.0.0.1",
port: parseInt(process.env.REDIS_PORT || "7777", 10),
};
if (process.env.REDIS_PASSWORD) {
config.password = process.env.REDIS_PASSWORD;
}
if (process.env.REDIS_USERNAME) {
config.username = process.env.REDIS_USERNAME;
}
console.log("Connecting to", config.host + ":" + config.port);
if (config.password || config.username) {
console.log("Using authentication");
}
const redis = new Redis(config);
try {
console.log("PING:", await redis.ping());
console.log("SET foo bar:", await redis.set("foo", "bar"));
console.log("GET foo:", await redis.get("foo"));
console.log("SET key with EX 5:", await redis.set("temp", "123", "EX", 5));
console.log("TTL temp:", await redis.ttl("temp"));
console.log("DEL foo,temp:", await redis.del("foo", "temp"));
} catch (err) {
if (err.message && err.message.includes("NOAUTH")) {
console.error("\nError: Authentication required!");
console.error("Create examples/.env file with:");
console.error(" REDIS_PASSWORD=your-password");
console.error("\nOr with username:");
console.error(" REDIS_USERNAME=admin");
console.error(" REDIS_PASSWORD=your-password");
} else {
console.error(err);
}
process.exit(1);
} finally {
redis.disconnect();
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});