In diesem Handbuch verwenden Sie ** Python ** und ** Redis **, um eine Spiel-Bestenliste auf ** Alibaba Cloud ** zu erstellen.
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.
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.
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, 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>
-----
chmod 755 /var/www/python/leaderboards.py
7, starten Sie Apache neu.
service apache2 restart
Unten finden Sie ein Codebeispiel in Python, das ich jedoch weiter erläutern werde.
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.
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).
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.
Nachfolgend finden Sie die erwartete Antwort beim Ausführen von Code auf einem Webserver.
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