Skip to content

humbertodias/go-redis-ranking

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-redis-ranking

This repository contains a basic setup using Go, Gin and Redis to build a ranking/leaderboard system.
You can find a full tutorial on how to build this on the soup.dev blog.

Setup

You should have Go and either Docker or Redis installed on your system.

To run the project, use the following commands:

git clone https://github.com/humbertodias/go-redis-ranking.git
cd src
go get .
docker run -d -p 6379:6379 redis:latest
go run .

or

cd `mktemp -d` && git clone https://github.com/humbertodias/go-redis-ranking.git .
docker compose up -d

Interacting with the system

You can add new entries into the system by sending a POST request:

curl -X POST http://localhost:8080/register -d '{"name":"test"}'
{
   "id": "e309ab7e-6e02-4b60-a374-52cd5c2a41dd",
   "name": "user",
   "rank": 6,
   "score": 4
} 

You can then use the id from the response to query the data for that entry:

curl -X GET "http://localhost:8080/rank?id=e309ab7e-6e02-4b60-a374-52cd5c2a41dd"
{
       "id": "e309ab7e-6e02-4b60-a374-52cd5c2a41dd",
       "name": "test",
       "rank": 6,
       "score": 4
}

Finally, you can get slices of the leaderboard by sending:

curl -X GET "http://localhost:8080/ranks?loffset=1&imit=3"
[
    {
           "id": "0a363580-98f9-4d4c-b57b-e30259807871",
           "name": "AUserWithQuiteALongName",
           "rank": 1,
           "score": 23
    },
    {
           "id": "629e846e-7d8c-4a4a-b4dc-72c98b3038cc",
           "name": "AUserWithAShorterName",
           "rank": 2,
           "score": 21
    },
    {
           "id": "06894035-f00b-439f-9837-8096af59de51",
           "name": "AnEvenShorterName",
           "rank": 3,
           "score": 17
    }
]

Result

RedisCommander

http://localhost:8081

image

Ranks

http://localhost:8080/ranks

image

About

Ranking system using Go and Redis.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%