Dans ce guide, vous utiliserez ** Python ** et ** Redis ** pour créer un classement de jeu sur ** Alibaba Cloud **.
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.
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.
ssh -i root@
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>
-----
chmod 755 /var/www/python/leaderboards.py
service apache2 restart
Vous trouverez ci-dessous un exemple de code en Python, mais je l'expliquerai plus en détail.
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.
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).
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.
Vous trouverez ci-dessous la réponse attendue lors de l'exécution de code sur un serveur Web.
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).