Redis Leaderboard Python (Django)
Show how the redis works with Python (Django).
Try it out deploying on Heroku
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
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
Static сontent runs automatically with the backend part. In case you need to run it separately, please see README in the client folder.