Redis Leaderboard Python (Django)
Show how the redis works with Python (Django).
Try it out deploying on Heroku
(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:
- Open link google cloud console.
- Click "Edit and deploy new revision" button.
- Add environment.
- Select vpc-connector and deploy application.
1. How the data is stored
- 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
- The Ranks of AAPL of 2,6 trillions are stored in a ZSET.
ZADD companyLeaderboard 2600000000000 company:AAPL
2. How the data is accessed
- Top 10 companies:
ZREVRANGE companyLeaderboard 0 9 WITHSCORES
- All companies:
ZREVRANGE companyLeaderboard 0 -1 WITHSCORES
- Bottom 10 companies:
ZRANGE companyLeaderboard 0 9 WITHSCORES
- Between rank 10 and 15:
ZREVRANGE companyLeaderboard 9 14 WITHSCORES
- Show ranks of AAPL, FB and TSLA:
ZREVRANGE companyLeaderBoard company:AAPL company:FB company:TSLA
- Adding 1 billion to market cap of FB company:
ZINCRBY companyLeaderBoard 1000000000 "company:FB"
- Reducing 1 billion of market cap of FB company:
ZINCRBY companyLeaderBoard -1000000000 "company:FB"
- Companies between 500 billion and 1 trillion:
ZCOUNT companyLeaderBoard 500000000000 1000000000000
- Companies over a Trillion:
ZCOUNT companyLeaderBoard 1000000000000 +inf
How to run it locally?
Development local env
git clone https://github.com/redis-developer/basic-redis-leaderboard-demo-python.git
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/configuration): copy .env.example to create .env (copy .env.example .env or cp .env.example .env). And provide the values for environment variables (if needed)
- DJANGO_DEBUG: Django debug mode
- DJANGO_ALLOWED_HOSTS: Allowed hosts
- 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 python, pip and venv (on mac: https://installpython3.com/mac/)
Use python version: 3.8.9
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
python3 server/manage.py collectstatic
python3 server/manage.py runserver
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.