Erstellen Sie mit Python und Redis eine Rangliste für Spiele in der Alibaba-Cloud

In diesem Handbuch verwenden Sie ** Python ** und ** Redis **, um eine Spiel-Bestenliste auf ** Alibaba Cloud ** zu erstellen.

Zweck

Die Hauptidee dieser Demo besteht darin, die Cache-Schicht (Redis) zu verwenden, anstatt auf die Datenbank zuzugreifen, um eine Rangliste in einer Spieleanwendung zu generieren. Dieser Ansatz eignet sich für große Datenbanken, die Echtzeitantworten erfordern.

Voraussetzungen

Es ist nicht erforderlich, aber ein grundlegendes Verständnis von Python ist von Vorteil (Beispielcode ist Python). Dieses Mal verwenden wir Redis, daher ist es eine gute Idee, es zu lesen, um zu wissen, wie Redis ist.

Informationen zum Erstellen eines Redis-Clusters in Alibaba Cloud finden Sie in dem separaten Schritt-für-Schritt-Befehl in diesem Handbuch (https://www.alibabacloud.com/help/ja/doc-detail/26351.htm). Ich werde es hier weglassen, weil ich damit weitermachen kann. Die Einstellungen sind einfach und leicht zu verstehen.

Stand der Umsetzung

  1. Elastic Compute Service (ECS) und ApsaraDB for Redis Help / ja / doc-detail / 26351.htm) ist eingerichtet. In diesem Tutorial wird Ubuntu 16.04 als Betriebssystem verwendet, die Lösung selbst kann jedoch ein beliebiges Betriebssystem sein. Der Code kann je nach ausgewähltem Betriebssystem leicht variieren.
  2. Melden Sie sich beim ECS-Server an.
ssh -i  root@
  1. Befolgen Sie die Schritte zum Installieren der Umgebung.
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, ersetzen Sie 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. Platzieren Sie die Datei in /var/www/leaderboards.py und bearbeiten Sie die Einstellungen in Zeile 8 (Quellcode unten).
  2. Bearbeiten Sie die Berechtigungen in der Datei.
chmod 755 /var/www/python/leaderboards.py

7, starten Sie Apache neu.

service apache2 restart
  1. Greifen Sie auf den Webbrowser zu und geben Sie die öffentliche IP-Adresse ein. Sie müssen sehen, ob es funktioniert.

Codebeschreibung

Unten finden Sie ein Codebeispiel in Python, das ich jedoch weiter erläutern werde.

image.png

Codebeschreibung: 1, verbinden Sie sich mit Redis (8. Zeile):

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

Sie müssen Ihren Hostnamen und Ihr Kennwort aktualisieren, damit dies ordnungsgemäß funktioniert. Es kann unter "Verbindungsadresse" abgerufen werden, wenn ApsaraDB für Redis erstellt wird. Dies ist auch das zum Zeitpunkt der Erstellung festgelegte Kennwort.

image.png

2, addiere die Punktzahl zur Rangliste (Zeile 16)

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

LeaderboardName ist der Schlüssel, den Sie für den Leaderboard-Namen festlegen möchten, Gamer ist der Benutzername oder die ID des Spielers und der letzte Parameter ist der Ort, an dem Sie die Punktzahl eingeben (in diesem Fall eine Zufallszahl).

  1. Holen Sie sich die Top 10 mit der höchsten Punktzahl (Zeile 19).
r.zrange(leaderboardName, 0, 9, desc=True, withscores=True)

LeaderboardName ist der Schlüssel, der den Namen der Bestenliste festlegt. Der zweite Parameter gibt an, mit welchem Rang begonnen werden soll (0 beginnt), und der dritte Parameter gibt an, wo gestoppt werden soll (-1, um bis zum Ende anzuzeigen). Der Wert desc = True sortiert die Bestenlisten in absteigender Reihenfolge (standardmäßig False).

4, erhalten Sie die Rangliste des aktuellen Spielers (Zeile 30).

r.zrevrank(leaderboardName, gamer)+1

LeaderboardName ist der Schlüssel, den Sie für den Leaderboard-Namen festgelegt haben, und Gamer ist der Benutzername oder die ID des Spielers. Die Ränge beginnen in der Datenbank bei 0 statt bei 1, daher müssen Sie einen (+1) hinzufügen. 5. Holen Sie sich die Punktzahl des aktuellen Spielers (oder eines anderen) (Zeile 34).

r.zscore(leaderboardName, gamer) 

LeaderboardName ist der Schlüssel, den Sie für den Leaderboard-Namen festgelegt haben, und Gamer ist der Benutzername oder die ID des Spielers.

Führen Sie den Code aus

Nachfolgend finden Sie die erwartete Antwort beim Ausführen von Code auf einem Webserver.

image.png

Fazit

Redis speichert Daten im Speicher und kann je nach Produktreife Millionen von Anforderungen pro Sekunde erreichen. Dies macht es zur perfekten Datenbank für diesen Anwendungsfall und andere Caching-Anforderungen.

Weitere Informationen zu Redis in der Alibaba Cloud finden Sie auf der Seite ApsaraDB für Redis (https://www.alibabacloud.com/de/product/apsaradb-for-redis).

Recommended Posts

Erstellen Sie mit Python und Redis eine Rangliste für Spiele in der Alibaba-Cloud
Erstellen Sie eine Python + OpenCV-Umgebung in Cloud9
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Erstellen einer Python-Umgebung auf einem Mac bis zur Verwendung von Jupyter Lab
Erstellen Sie eine Python3-Umgebung unter CentOS7
Erstellen Sie eine Chainer-Umgebung mit CUDA und cuDNN auf einer p2-Instanz
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
Erstellen Sie Python 3 und OpenCV unter Ubuntu 18.04
Erstellen Sie eine Python-Umgebung unter MacOS (Catallina)
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen Sie mit Cloud9 (jupyter miniconda python3) eine Lernumgebung für "Deep Learning von Grund auf neu".
Erstellen Sie die Python3.5 + matplotlib-Umgebung unter Ubuntu 12 mit Anaconda
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Erstellen Sie eine Python-Umgebung auf einem Mac (Mountain Lion)
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie eine Python-Entwicklungsumgebung auf Ihrem Mac
Versuchen Sie es mit Tensorflow. ① Erstellen Sie eine Python-Umgebung und führen Sie Tensorflow ein
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Versuch und Irrtum]
ACME mit Alibaba Cloud verschlüsseln: Erstellen Sie eine ACME-Anforderung und signieren Sie eine JWS-Nutzlast
Grundeinstellungen für die Verwendung von Python3.8 und pip unter CentOS8
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (3) GVim8.0 und Python3.6
Installieren Sie Python3 auf einem Mac und erstellen Sie eine Umgebung [Definitive Edition]
Erstellen einer Django-Entwicklungsumgebung mit pyenv-virtualenv auf einem Mac
Versuchen Sie, eine komprimierte Datei mit Python und zlib zu erstellen
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
So erstellen Sie eine schöne Python-Umgebung auf einem neuen Mac und installieren Jupter Notebook
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
Ursachen und Lösungen, wenn die Erstellung von Python Sam in einer neu erstellten Cloud9-Umgebung fehlschlägt
Erstellen Sie die Python-Erweiterung E-Cell 4 unter Windows 7 (64 Bit).
Versuchen Sie, ein einfaches Spiel mit Python 3 und iPhone zu erstellen
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (1)
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.
Implementieren eines Generators mit Python> Link> Yield und next ()> Yield
Erstellen Sie eine virtuelle Python-Umgebung mit venv (Django + MySQL ①)
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Sprachtranskriptionsverfahren mit Python und Google Cloud Speech API
Build Python auf Ubuntu
Erstellen Sie unter Windows eine anständige Shell- und Python-Umgebung
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
So erstellen Sie eine virtuelle Ausführungsumgebung für Python mit Visual Studio Code und pipenv auf einem Windows-Computer (auch Jupyter-Notebook)
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Erstellen Sie eine Umgebung für maschinelles Lernen mit Python unter MacOSX
[Python] Kapitel 01-03 Über Python (Schreiben und Ausführen eines Programms mit PyCharm)
Verwenden Sie Python auf Raspberry Pi 3, um "Temperatur (mit A / D-Wandler)" zu erkennen!
IP-Spoof mit tor unter macOS und mit Python prüfen
[Schatzdaten] [Python] Führen Sie mit dem TD-Client eine Abfrage zu Schatzdaten aus.
Erstellen Sie eine Python-Datenanalyseumgebung auf einem Mac (El Capitan).
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (2) Grundeinstellungen