package main import ( "context" "fmt" "io" "log" "os" "strings" _ "embed" "github.com/joho/godotenv" "github.com/redis/go-redis/v9" ) var Error *log.Logger var Warning *log.Logger func init() { log.SetFlags(log.Lmicroseconds | log.Lshortfile) logFile, err := os.Create("main.log") if err != nil { log.Printf("Error creating log file: %v", err) return } logger := io.MultiWriter(os.Stdout, logFile) log.SetOutput(logger) Error = log.New(io.MultiWriter(logFile, os.Stderr, os.Stdout), fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"), log.Lmicroseconds|log.Lshortfile) Warning = log.New(io.MultiWriter(logFile, os.Stdout), fmt.Sprintf("%sWarning:%s ", "\033[0;93m", "\033[0m"), log.Lmicroseconds|log.Lshortfile) } //go:embed .env var env string var ctx = context.Background() func main() { envvar, err := godotenv.Parse(strings.NewReader(env)) if err != nil { Error.Fatalf("Error parsing .env file: %v", err) os.Exit(1) } redisHost, ok := envvar["REDIS_HOST"] if !ok { Error.Fatalf("REDIS_HOST not set in .env file") return } redisPassword, ok := envvar["REDIS_PASSWORD"] if !ok { Error.Fatalf("REDIS_PASSWORD not set in .env file") return } rdb := redis.NewClient(&redis.Options{ Addr: redisHost, Password: redisPassword, DB: 0, }) err = rdb.Set(ctx, "key", "value", 0).Err() if err != nil { panic(err) } val, err := rdb.Get(ctx, "key").Result() if err != nil { panic(err) } fmt.Println("key", val) val2, err := rdb.Get(ctx, "key2").Result() if err == redis.Nil { fmt.Println("key2 does not exist") } else if err != nil { panic(err) } else { fmt.Println("key2", val2) } // Output: key value // key2 does not exist }