Créez un classement de jeu sur le cloud Alibaba en utilisant Python et Redis

Dans ce guide, vous utiliserez ** Python ** et ** Redis ** pour créer un classement de jeu sur ** Alibaba Cloud **.

Objectif

L'idée principale de cette démo est d'utiliser le niveau de cache (Redis) au lieu de frapper la base de données pour générer un classement dans une application de jeu. Cette approche convient aux grandes bases de données qui nécessitent des réponses en temps réel.

Conditions préalables

Ce n'est pas obligatoire, mais avoir une compréhension de base de Python est un plus (l'exemple de code est Python). Cette fois, nous utilisons Redis, c'est donc une bonne idée de le lire pour savoir à quoi ressemble Redis.

Pour plus d'informations sur la création d'un cluster Redis dans Alibaba Cloud, lisez la commande étape par étape séparée dans ce guide (https://www.alibabacloud.com/help/ja/doc-detail/26351.htm) et lisez-la. Je vais l'omettre ici parce que je peux continuer. Les paramètres sont simples et faciles à comprendre.

État de mise en œuvre

  1. Elastic Compute Service (ECS) et [ApsaraDB for Redis](https://www.alibabacloud.com/ Help / ja / doc-detail / 26351.htm) est configuré. Ce tutoriel utilise Ubuntu 16.04 comme système d'exploitation, mais la solution elle-même peut être n'importe quel système d'exploitation. Le code peut varier légèrement selon le système d'exploitation sélectionné.
  2. Connectez-vous au serveur ECS.
ssh -i  root@
  1. Suivez les étapes pour installer l'environnement.
rm /usr/bin/python # Change python into version 3
ln -s /usr/bin/python3 /usr/bin/python
apt-get update # Update Ubuntu
export LC_ALL=C # Set Locale
apt-get install python3-pip # Install pip
pip install redis # Install python-redis
apt-get install apache2 # Install apache
mkdir /var/www/python # Set Environment
a2dismod mpm_event
a2enmod mpm_prefork cgi

4, remplacez etc / apache2 / sites-enabled / 000-default.conf.

-----
<VirtualHost *:80>
        DocumentRoot /var/www/python
        <Directory /var/www/python>
                Options +ExecCGI
                DirectoryIndex leaderboards.py
        </Directory>
        AddHandler cgi-script .py
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
-----
  1. Placez le fichier dans /var/www/leaderboards.py et modifiez les paramètres sur la ligne 8 (code source ci-dessous).
  2. Modifiez les autorisations dans le fichier.
chmod 755 /var/www/python/leaderboards.py
  1. Redémarrez Apache.
service apache2 restart
  1. Accédez au navigateur Web et entrez l'adresse IP publique. Vous devez voir si cela fonctionne.

Description du code

Vous trouverez ci-dessous un exemple de code en Python, mais je l'expliquerai plus en détail.

image.png

Description du code: 1, connectez-vous à Redis (8ème ligne):

r = redis.StrictRedis(host='', port=6379, db=0, password='') 

Vous devrez mettre à jour votre nom d'hôte et votre mot de passe pour que cela fonctionne correctement. Il peut être obtenu à partir de "Adresse de connexion" lors de la création d'ApsaraDB pour Redis. C'est également le mot de passe défini au moment de la création.

image.png

2, ajoutez le score au classement (ligne 16)

r.zincrby(leaderboardName, gamer, random.randint(1,1000000)) 

LeaderboardName est la clé que vous souhaitez définir pour le nom du classement, le joueur est le nom d'utilisateur ou l'ID du joueur, et le dernier paramètre est l'endroit où vous mettez le score (dans ce cas, un nombre aléatoire).

  1. Obtenez le top 10 avec le score le plus élevé (ligne 19).
r.zrange(leaderboardName, 0, 9, desc=True, withscores=True)

LeaderboardName est la clé qui définit le nom du classement, le deuxième paramètre est le classement avec lequel commencer (0 commence) et le troisième paramètre est l'endroit où s'arrêter (-1 pour afficher jusqu'à la fin). La valeur desc = True trie les classements par ordre décroissant (False par défaut).

4, obtenez le classement du joueur actuel (ligne 30).

r.zrevrank(leaderboardName, gamer)+1

LeaderboardName est la clé que vous définissez pour le nom du classement et le joueur est le nom d'utilisateur ou l'identifiant du joueur. Les rangs commencent à 0 au lieu de 1 dans la base de données, vous devez donc en ajouter un (+1). 5. Obtenez le score du joueur actuel (ou de n'importe qui) (ligne 34).

r.zscore(leaderboardName, gamer) 

LeaderboardName est la clé que vous définissez pour le nom du classement et le joueur est le nom d'utilisateur ou l'identifiant du joueur.

Exécuter le code

Vous trouverez ci-dessous la réponse attendue lors de l'exécution de code sur un serveur Web.

image.png

Conclusion

Redis stocke les données en mémoire et peut atteindre des millions de requêtes par seconde en fonction de la maturité du produit. Cela en fait la base de données parfaite pour ce cas d'utilisation et d'autres besoins de mise en cache.

Pour plus d'informations sur Redis sur Alibaba Cloud, consultez la page ApsaraDB pour Redis (https://www.alibabacloud.com/en/product/apsaradb-for-redis).

Recommended Posts

Créez un classement de jeu sur le cloud Alibaba en utilisant Python et Redis
Créer un environnement Python + OpenCV sur Cloud9
Créez un environnement Python sur votre Mac en utilisant pyenv
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Construire un environnement Python sur un Mac, jusqu'au point d'utiliser Jupyter Lab
Créer un environnement python3 sur CentOS7
Créer un environnement Chainer à l'aide de CUDA et cuDNN sur une instance p2
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Créer un environnement Python 3 et OpenCV sur Ubuntu 18.04
Construire un environnement python sur MacOS (Catallina)
Un mémo contenant Python2.7 et Python3 dans CentOS
Créez un environnement d'apprentissage pour le «Deep learning from scratch» avec Cloud9 (jupyter miniconda python3)
Construire l'environnement Python3.5 + matplotlib sur Ubuntu 12 en utilisant Anaconda
Remarques sur l'installation de Python3 et l'utilisation de pip sous Windows7
Créez un environnement python avec ansible sur centos6
Créer un environnement Python sur Mac (Mountain Lion)
Créer une carte Web en utilisant Python et GDAL
Créez un environnement de développement Python sur votre Mac
Essayez d'utiliser tensorflow ① Créez un environnement python et introduisez tensorflow
Construire un environnement de développement Python sur Raspberry Pi
Construisez un environnement Python + bouteille + MySQL avec Docker sur RaspberryPi3! [Essai et erreur]
Crypter ACME avec Alibaba Cloud: créez une requête ACME et signez une charge utile JWS
Paramètres initiaux pour l'utilisation de Python3.8 et pip sur CentOS8
Créer un environnement de développement Python basé sur GVim sur Windows 10 (3) GVim8.0 et Python3.6
Installez Python 3 sur Mac et créez un environnement [Definitive Edition]
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
Essayez de créer un fichier compressé en utilisant Python et zlib
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
Comment créer un bel environnement Python sur un nouveau Mac et installer Jupter Notebook
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Comment déployer une application Django dans le cloud Alibaba
Créer un environnement Python d'apprentissage automatique sur Mac OS
Causes et solutions lorsque la compilation de Python Sam échoue dans un environnement Cloud9 nouvellement créé
Construire l'extension Python E-Cell 4 sur Windows 7 (64 bits)
Essayez de créer un jeu simple avec Python 3 et iPhone
Créer un environnement de développement Python basé sur GVim sur l'installation de Windows 10 (1)
Comment créer un environnement Django (python) sur Docker
Créer un environnement de développement Python sur Mac OS X
Implémentation d'un générateur en utilisant Python> link> yield et next ()> yield
Construire un environnement virtuel Python en utilisant venv (Django + MySQL ①)
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Procédure de transcription vocale à l'aide de Python et de l'API Google Cloud Speech
construire Python sur Ubuntu
Créez un environnement shell et python décent sur Windows
Comment créer un environnement Python sur Amazon Linux 2
Comment créer un environnement d'exécution virtuelle pour Python à l'aide de Visual Studio Code et de pipenv sur une machine Windows (également le notebook Jupyter)
Créer un environnement d'étude d'apprentissage automatique Python avec macOS Sierra
Créer un environnement d'apprentissage automatique à l'aide de Python sur MacOSX
[Python] Chapitre 01-03 À propos de Python (Ecrire et exécuter un programme à l'aide de PyCharm)
Utilisez python sur Raspberry Pi 3 pour détecter la "température (en utilisant un convertisseur A / N)"!
Usurpation d'adresse IP à l'aide de tor sur macOS et vérification avec python
[Treasure Data] [Python] Exécutez une requête sur Treasure Data à l'aide du client TD.
Créer un environnement d'analyse de données python sur Mac (El Capitan)
Créer un environnement de développement Python basé sur GVim sur les paramètres de base de Windows 10 (2)