huzairuje / limiter-with-redis

implementing golang service using rate limiter (token bucket algorithm) and using redis as cache as optional source data.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README

Description

this repository basically implementing limiter rate (Token Bucket Algorithm) and cache (CQRS pattern) on golang using echo framework (https://echo.labstack.com/), postgresql and redis.

Install PreRequisite

  1. run make local to install or up or run the postgres container and redis container.
  2. make sure the docker postgres or container postgres is running and make database on the postgres container with name test_cache_cqrs and run the sql script on the directory migrations
  3. make sure redis container is up and running
  4. make sure the config on config.local.yaml is correct

How to Run Locally

make run

or simply with go command

go run main.go

Endpoint URL

  1. GET localhost:1234/api/v1/articles?page=0&size=1&query=place get list article curl
curl --location 'localhost:1234/api/v1/articles?page=0&size=1&query=place'
  1. GET localhost:1234/api/v1/articles/12 Get Detail Article curl
curl --location 'localhost:1234/api/v1/articles/12'
  1. POST localhost:1234/api/v1/articles create article curl
curl --location 'localhost:1234/api/v1/articles' \
--header 'Content-Type: application/json' \
--data '{
    "author": "radiohead",
    "title": "jigsaw falling into place",
    "body": "<div>Just as you take my hand<br>Just as you write my number down<br>Just as the drinks arrive<br>Just as they play your favourite song<br>As your bad day disappears<br>No longer wound up like a spring<br>Before you'\''ve had too much<br>Come back in focus again<br>"
}'

About

implementing golang service using rate limiter (token bucket algorithm) and using redis as cache as optional source data.


Languages

Language:Go 98.8%Language:Dockerfile 0.8%Language:Makefile 0.4%