Open Source im professionellen Einsatz
Linux-Magazin 05/2013
460

Redis-Transaktionen

Die Funktion »stats()« in Listing 11 zeigt beispielhaft, wie Programmierer Rdis-Transaktionen verwenden. Zunächst öffnet Zeile 2 mit der Methode »multi()« eine Transaktion und speichert sie in der gleichnamigen Variablen ab. Die Methoden »get()« und »scard()« – auf das Transaktionsobjekt »multi« angewendet – lassen die Operationen innerhalb der Transaktion ablaufen. Dies kann auch – wie in Zeile 3 – als Verkettung geschehen. Die Methode »exec()« in Zeile 4 schließt die Transaktion ab.

Listing 11

Zusammengefasste Transaktionen

01 function stats(cbk) {
02  var multi = db.multi();
03  multi.get('max').scard('open').scard('checkedIn');
04  multi.exec(function(err, rp) {
05   cbk((rp[0] - rp[1] - rp[2]), rp[1], rp[2]);
06  });

Die Parameterliste der übergebenen Callback-Funktion ist wie in Listing 10 strukturiert. Jedoch speichert Listing 11 die Rückgabewerte der Redis-Operationen in einem Feld. Die vorliegende Callback-Funktion ruft eine weitere Callback-Funktion auf, die im ersten Parameter die Anzahl der freien Parkplätze, im zweiten die Anzahl der unbestätigten Buchungen und im dritten die der bestätigten Buchungen übernimmt. Die Methode »scard()« zählt die Mitglieder einer Menge.

Express und Connect

Das Webframework Express, mit dem im Folgenden die Beispielanwendung erstellt wird, ist Teil des Middleware-Frameworks Connect [10]. Das unter MIT-Lizenz erscheinende Connect liegt derzeit in der Version 2.7.1 vor. Npm installiert es lokal mit dem Befehl »sudo npm install connect« . Connect dient zum Einbinden von Middleware, also von Programmen, die Standardaufgaben wie das Protokollieren oder das Parsen von HTTP-Anfragen oder die Verwaltung einer Session übernehmen.

Connect enthält bereits über 20 verschiedene Middleware-Funktionen. Weitere Middleware findet sich im Wiki von Connect [11]. Listing 12 zeigt den Echo-Server mit Connect. Die Methode »use()« bindet in Zeile 3 die Middleware »logger« ein. Diese protokolliert HTTP-Anfragen per Standardausgabe. Zeilen 4 bis 6 beantworteten die HTTP-Anfrage im Stil des Echo-Servers aus Listing 2. Abbildung 6 zeigt die Ausgabe des Loggers.

Listing 12

use() bindet Middleware ein

01 var connect = require('connect');
02 var app = connect()
03  .use(connect.logger())
04  .use(function(req, res) {
05   res.end(req.url)
06  })
07  .listen(3000);

Listing 13

project.js

01 {
02   "name": "Buchung",
03   "version": "0.0.1",
04   "dependencies": {
05     "express": "3.0.4",
06     "jade": "*",
07     "redis": "*"
08   }
09 }

Abbildung 6: Die Middleware Logger protokolliert die HTTP-Anfragen per Standardausgabe.

Das Webframework Express [12] erleichtert das Entwickeln von Webanwendungen unter Node.js erheblich. Neben der Einbindung von Middleware per Connect bietet Express zudem Routen, verschiedene Template-Engines sowie viele hilfreiche API-Funktionen. Express erscheint unter MIT-Lizenz und weist derzeit die Versionsnummer 3.0.5 auf.

Npm installiert es global mit dem Befehl »npm install -g express« . Danach schafft sich der Programmierer mit dem gleichnamigen Kommandozeilentool ein passendes Gerüst, beispielsweise »express booking« . Das landet dann im aktuellen Arbeitsverzeichnis, die angelegten Dateien und Verzeichnisse sind in Abbildung 7 dargestellt.

Abbildung 7: Das Kommandozeilentool Express beim Anlegen eines Anwendungsgerüsts.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Bücher

    Die Bücherseite greift zwei aktuelle Trends auf: Das erste Werk behandelt die Anwendungsentwicklung mit dem Javascript-Server Node.js. Das zweite möchte Java- und C-Programmierer in die Arbeit mit mehreren Prozessoren und Nebenläufigkeit einführen.

  • Web RTC

    Das Protokoll Web RTC macht den Browser zur Kommunikationszentrale: Ganz ohne Plugins erledigt er Videochats oder Datei-Übertragungen über Peer-to-Peer-Verbindungen.

  • Node.js

    Die Javascript-basierte Programmierumgebung für Webentwicklung Node.js bändigt den Ressourcen-Hunger von Echtzeit-Webanwendungen wie Onlinespielen oder Chatservern. Dank eines ereignisorientierten Ansatzes kommt Node.js dabei mit einem Webserver-Thread pro Instanz aus.

  • Super-Nginx bündelt Redis, Drizzle und Lua

    Einer der Rails-Hauptentwickler paketiert den schnellen Webserver Nginx mit einer Reihe zukunftsträchtiger Technologien.

  • Node 7.0.0 unterstützt mehr ES6-Features und parst URLs standardkonform

    Node 7.0.0 ist erschienen. Die darin verwendete Version 5.4 von V8 deckt die ES6-Funktionen zu 98 Prozent ab. Zudem verbessert die Version den Umgang mit URLs.

comments powered by Disqus

Ausgabe 07/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.