© saicle/Shutterstock.com
Eine (verkannte) NoSQL-Datenbank

Eine (verkannte) NoSQL-Datenbank


Der Remote Dictionary Service, kurz Redis, ist für viele leider nicht mehr als ein persistenter Memcache. Mit diesem Vorurteil möchte ich in diesem Artikel aufräumen. PHP verfügt, neben pRedis [1], einer reinen PHP-Implementierung, mit phpredis [2] über eine in C geschriebene Extension für höhere Performance. In diesem Artikel werden wir mit der Extension arbeiten; die Implementierung der Beispiele mit pRedis gestaltet sich jedoch ähnlich. Als Demoapplikation schauen wir uns ein Modul auf der vor Kurzem neu gelaunchten trivago-Plattform an. Es handelt sich um die Kartennavigation, die sich oben links auf der Seite befindet und fast vollständig auf Redis basiert.

Redis wird von Salvatore Sanfilippo entwickelt, der für VMware arbeitet und dort die Möglichkeit bekommt, sich vollständig auf die Weiterentwicklung der Datenbank zu konzentrieren. Redis entstand Anfang 2009, um die Performance eines (Web-)Analytics-Produkts (namens LLOOGG [3]) aus Salvatores Start-up zu verbessern. Mitte 2009 konnte er dann die zunächst eingesetzte MySQL-Datenbank vollständig durch Redis ablösen. Das Projekt wurde ein großer Erfolg und konnte sich innerhalb kürzester Zeit über eine wachsende Community freuen. Im März 2010 fand der bereits erwähnte Wechsel zu VMware statt. Trotz der Festanstellung Salvatores bleibt Redis weiterhin unter der BSD-Lizenz verfügbar. Redis wird von vielen großen Projekten eingesetzt und hat eine aktive Community. Zu den bekanntesten Plattformen gehört wohl YouPorn, die schon durch den Einsatz von Symfony2 durch die PHP-Presse gegangen ist. Projekte wie EngineYard, GitHub, Flickr und StackOverflow gehören ebenfalls zu der Liste der Anwender, was Redis eine sehr breite Basis verschafft.

Redis? Ist das nicht wie Memcache mit Persistenz?

Kurze Antwort: Nein. Redis ist in mehreren Aspekten anders aufgebaut als Memcache. Memcache dient in erster Linie als Level 2 Cache, für manche sogar als Level 1 Cache. Redis hingegen ist eine Datenbank, wenn auch keine im relationalen Sinn.

Redis unterstützt neben den klassischen, aus Memcache bekannten Operationen zum Schreiben und Lesen von einfachen Daten ein deutlich weiteres Feld an Datentypen und Operationen. Die Datentypen teilen sich in Listen, Sets und HashMaps auf. Transaktionen (Kasten: „Transaktionen in Redis“) sind mit dem Command Set aus MULTI, EXEC, DISCARD und WATCH möglich. Hinzu kommt ab Version 2.6 auch eine Scripting-Schnittstelle in Lua.

Ein Feature, das selten in Artikeln auftaucht, jedoch umso häuf...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang