An open API service indexing awesome lists of open source software.

https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs

Basic Redis Leaderboard demo written in Nodejs
https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs

Last synced: 11 months ago
JSON representation

Basic Redis Leaderboard demo written in Nodejs

Awesome Lists containing this project

README

          

# Basic Redis Leaderboard Demo NodeJS

Show how the redis works with NodeJS, Express.

## Screenshots

![How it works](https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/raw/master/docs/screenshot001.png)

# Overview video

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

[![Watch the video on YouTube](https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/raw/master/docs/YTThumbnail.png)](https://www.youtube.com/watch?v=zzinHxdZ34I)

## Try it out



Deploy to Heorku



Deploy with Vercel



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](https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/raw/master/docs/1.png)

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

![2 step](https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/raw/master/docs/2.png)

3. Add environment.

![3 step](https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/raw/master/docs/3.png)

4. Select vpc-connector and deploy application.

![4 step](https://github.com/redis-developer/basic-redis-leaderboard-demo-nodejs/raw/master/docs/4.png)


Problem with unsupported flags when deploying google cloud run button

# How it works?
## 1. How the data is stored:


  1. The company data is stored in a hash like below:
    HSET "company:AAPL" symbol "AAPL" market_cap "2600000000000" country USA


  2. The Ranks 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:
    ZSCORE companyLeaderBoard company:AAPL company:FB company:TSLA


  6. Adding market cap to companies:
    ZINCRBY companyLeaderBoard 1000000000 "company:FB"


  7. Reducing market cap to companies:
    ZINCRBY companyLeaderBoard -1000000000 "company:FB"


  8. Companies over a Trillion:
    ZCOUNT companyLeaderBoard 1000000000000 +inf

  9. Companies between 500 billion and 1 trillion:
    ZCOUNT companyLeaderBoard 500000000000 1000000000000


## How to run it locally?

#### Copy `.env.example` to create `.env`. And provide the values for environment variables

- REDIS_ENDPOINT_URI: Redis server URI
- REDIS_PASSWORD: Password to the server

#### Run frontend

```sh
cd client
yarn
yarn serve
```

#### Run backend

```sh
yarn
yarn dev
```