mirror of
https://github.com/marcel-dempers/docker-development-youtube-series.git
synced 2025-06-06 17:01:30 +00:00
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"github.com/julienschmidt/httprouter"
|
|
log "github.com/sirupsen/logrus"
|
|
"os"
|
|
"github.com/go-redis/redis/v8"
|
|
"context"
|
|
"strconv"
|
|
)
|
|
|
|
var redis_host = os.Getenv("REDIS_HOST")
|
|
var redis_port = os.Getenv("REDIS_PORT")
|
|
var redis_password = os.Getenv("REDIS_PASSWORD")
|
|
|
|
var ctx = context.Background()
|
|
var rdb *redis.Client
|
|
|
|
var counter = 0
|
|
func main() {
|
|
|
|
r := redis.NewClient(&redis.Options{
|
|
Addr: redis_host + ":" + redis_port,
|
|
Password: redis_password, // no password set
|
|
DB: 0, // use default DB
|
|
})
|
|
rdb = r
|
|
|
|
router := httprouter.New()
|
|
|
|
router.GET("/", func(w http.ResponseWriter, r *http.Request, p httprouter.Params){
|
|
increment_redis_key(w,r,p)
|
|
})
|
|
|
|
fmt.Println("Running...")
|
|
log.Fatal(http.ListenAndServe(":80", router))
|
|
}
|
|
|
|
func increment_redis_key(writer http.ResponseWriter, request *http.Request, p httprouter.Params) {
|
|
|
|
val, err := rdb.Get(ctx, "counter").Result()
|
|
|
|
if err == redis.Nil {
|
|
err := rdb.Set(ctx, "counter", 1, 0).Err()
|
|
counter++
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
} else if err != nil {
|
|
panic(err)
|
|
} else {
|
|
counter,_ = strconv.Atoi(val)
|
|
counter++
|
|
err := rdb.Set(ctx, "counter", counter, 0).Err()
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
fmt.Fprint(writer, counter)
|
|
fmt.Println("counter", counter)
|
|
} |