Clear http handler's resource

I am very new to golang. I have some handlers that make use of go’s http package. Go version is 1.6.x. Before a handler gets executed, there are some filter operations which may perform operations like rate limit. And the rate limit do some leaky bucket checking, so there is a queue like list and each handler will check and register its timestamp to redis.

Now I know that each handler is handled by go routine as mentioned by [1]. So I am thinking when the handler is accomplished its execution, I can cleanup its related info from redis. However I check online, I do not find doc mentioning how to perform post-operation.

The only info I found so far is [2] where seemingly I can use channel to receive notification by spawning a go routine for cleanup. Is this the only way to do that. If so, it seems that I need to insert such cleanup function to all endpoints/ handlers I have. If there are 100 endpoints/ handlers, I need to insert 100 lines to the end of all those handlers/ endpoints. Is there better way to do this? Thanks

[1]. https://stackoverflow.com/questions/34386232/why-isnt-this-go-http-server-spawning-a-goroutine-per-request-in-chrome-47/34386358#34386358
[2]. https://gianarb.it/blog/go-http-cleanup-http-connection-terminated

There is a way that I use on my websites. Dynamic way, sort of. This has served a static site for a couple of years. The endpoint variable is created from r.URL.Path and if there is no html page, it serves a 404 page. https://static.go4webdev.org/server This code serves about 50 endpoints.

There is another approach to store this instead redis, like algorithm Token Bucket, you can use this package for this: https://github.com/didip/tollbooth

or an implementation a little bit more simple, but manually, see this:
https://www.alexedwards.net/blog/how-to-rate-limit-http-requests

How are you performing these operations before the handler is executed? If it’s with some sort of wrapper around the goroutines, can you just add a call to cleanup the related data in redis to after the handler gets called?

I don’t know how these handler resources are created but normally this is the classic case for the middleware pattern:

func middleware(handler http.HandlerFunc) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		fmt.Println("Pre-Hooks")
		handler(w,r)
		fmt.Println("Post-Hooks")
	}
}