Skip to content

collabnix/basic-redis-leaderboard-demo-java

 
 

Repository files navigation

Basic Redis Leaderboard Demo Java (Spring)

Show how the redis works with Java (Spring).

alt text

Overview video

Here's a short video that explains the project and how it uses Redis:

Watch the video on YouTube

Try it out

Deploy to Heroku

Run on Google Cloud (See notes: How to run on Google Cloud)

How to run on Google Cloud

If you don't have redis yet, plug it in (https://spring-gcp.saturnism.me/app-dev/cloud-services/cache/memorystore-redis). After successful deployment, you need to manually enable the vpc connector as shown in the pictures:

  1. Open link google cloud console.

1 step

  1. Click "Edit and deploy new revision" button.

2 step

  1. Add environment.

3 step

  1. Select vpc-connector and deploy application.

4  step

Problem with unsupported flags when deploying google cloud run button

How it works?

How it works

How it works?

1. How the data is stored:

  1. The AAPL's details - market cap of 2,6 triillions and USA origin - are stored in a hash like below:
     HSET "company:AAPL" symbol "AAPL" market_cap "2600000000000" country USA
  2. The Ranks of AAPL of 2,6 trillions are stored in a ZSET.
    ZADD  companyLeaderboard 2600000000000 company:AAPL

2. How the data is accessed:

  1. Top 10 companies:
    ZREVRANGE companyLeaderboard 0 9 WITHSCORES
  2. All companies:
    ZREVRANGE companyLeaderboard 0 -1 WITHSCORES
  3. Bottom 10 companies:
    ZRANGE companyLeaderboard 0 9 WITHSCORES
  4. Between rank 10 and 15:
    ZREVRANGE companyLeaderboard 9 14 WITHSCORES
  5. Show ranks of AAPL, FB and TSLA:
    ZREVRANGE  companyLeaderBoard company:AAPL company:FB company:TSLA
  6. Adding 1 billion to market cap of FB company:
    ZINCRBY companyLeaderBoard 1000000000 "company:FB"
  7. Reducing 1 billion of market cap of FB company:
    ZINCRBY companyLeaderBoard -1000000000 "company:FB"
  8. Companies between 500 billion and 1 trillion:
    ZCOUNT companyLeaderBoard 500000000000 1000000000000
  9. Companies over a Trillion:
    ZCOUNT companyLeaderBoard 1000000000000 +inf

How to run it locally?

Development

git clone 

Run docker compose or install redis manually

Install docker (on mac: https://docs.docker.com/docker-for-mac/install/)

docker network create global
docker-compose up -d --build

Open directory server (cd server): copy .env.example to create .env (copy .env.example .env or cp .env.example .env). And provide the values for environment variables (if needed)

- REDIS_URL: Redis server url
- REDIS_HOST: Redis server host
- REDIS_PORT: Redis server port
- REDIS_DB: Redis server db index
- REDIS_PASSWORD: Redis server password

Run backend

Install gradle (Use Gradle 6.3 or later) (on mac: https://gradle.org/install/)

Install JDK (use 8 or later version) (on mac: https://docs.oracle.com/javase/10/install/installation-jdk-and-jre-macos.htm)

cd server
export $(cat .env | xargs)
./gradlew build
./gradlew run

Run frontend

Static сontent runs automatically with the backend part. In case you need to run it separately, please see README in the client folder.

About

A basic Redis Leaderboard app written in Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 47.8%
  • Java 40.7%
  • HTML 6.1%
  • JavaScript 5.1%
  • Shell 0.3%