rust-cache-server 0.1.0

High-performance Redis-like cache server in Rust - open source alternative without Redis licensing concerns
Documentation
const Redis = require("ioredis");
const fs = require("fs");
const path = require("path");

// Load .env file if it exists
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() {
  // Read auth from environment variables or use defaults
  const config = {
    host: process.env.REDIS_HOST || "127.0.0.1",
    port: parseInt(process.env.REDIS_PORT || "7777", 10),
  };

  // Add authentication if provided
  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);
});