Bibliothek / SDK
petergoldstein/dalli avatar
petergoldstein/dalli

Dalli: schneller Memcached-Zugriff für Ruby

Dieses Projekt rundet „High performance memcached client for Ruby. Valid examples: :, /, |, ., -, _, # Security Note By default, Dalli uses Ruby's Marshal for serialization.“ zu einer praxistauglichen Open-Source-Lösung zusammen, mit wiederverwendbarer Tooling- und Integrationsunterstützung für reale Anwendungsfälle.

3.113 Sterne468 ForksRubyMIT
GitHub

Auf einen Blick

Was ist das?
Dalli ist ein leistungsstarker, reiner Ruby-Client für memcached, der Namespaces, Failover, SSL/TLS und OpenTelemetry-Tracing unterstützt.
Für wen ist es gedacht?
Dalli wird von Peter M. Goldstein gepflegt, Mike Perham ist der ursprüngliche Autor, und es ist unter der MIT-Lizenz veröffentlicht. Die README verweist für die Benutzerdokumentation auf das Wiki und für Ankündigungen und Fragen auf GitHub Discussions.
Darf ich es kommerziell nutzen?
Ja. MIT ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 30 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich Ruby, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 14. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Ein reiner Ruby-Client für Memcached-Server

Dalli ist ein leistungsstarker, reiner Ruby-Client für den Zugriff auf memcached-Server. Die README listet Unterstützung für einfache und komplexe Konfigurationen, Failover zwischen Instanzen, feingranulare Steuerung von Serialisierung und Komprimierung, thread-sicheren Betrieb, SSL/TLS-Verbindungen und OpenTelemetry-Tracing auf. Der Projektname ist eine Variante von Salvador Dali und bezieht sich auf sein Gemälde Die Beständigkeit der Erinnerung. Der derzeitige Betreuer ist Peter M. Goldstein; Mike Perham hat das Projekt ursprünglich erstellt und viele Jahre lang gepflegt. Die Repository-Beschreibung identifiziert es als leistungsstarken Memcached-Client für Ruby.

Anforderungen und Memcached-Versionskompatibilität

Die README spezifiziert Ruby 3.3 oder später, wobei auch JRuby unterstützt wird, und memcached 1.6.27 oder später. Dalli wird sowohl gegen die minimal unterstützte Memcached-Version als auch gegen die neueste Version getestet. Frühere 1.6.x-Server werden nicht unterstützt, da das Meta-Protokoll unbekannte Flags ablehnt; Funktionen, die nach der Veröffentlichung eines Servers hinzugefügt wurden, schlagen mit CLIENT_ERROR invalid flag fehl, anstatt elegant zu degradieren. Dies macht die Versionsuntergrenze zu einer harten Anforderung und nicht zu einem Vorschlag.

Namespaces und Schlüsseltrennzeichen

Dalli unterstützt Namespaces, um einen Cache zu partitionieren und Schlüsselkollisionen zwischen verschiedenen Anwendungen oder Umgebungen zu vermeiden. Ein Namespace kann ein statischer String sein, wie in Dalli::Client.new('localhost:11211', namespace: 'myapp'), oder ein Proc, der bei jeder Operation ausgewertet wird, z. B. einer, der eine Mandanten-ID aus dem Thread-lokalen Zustand liest. Das Standardtrennzeichen zwischen Namespace und Schlüssel ist ein Doppelpunkt, kann aber mit der Option namespace_separator geändert werden, die ein einzelnes nicht-alphanumerisches Zeichen sein muss. Die README listet gültige Beispiele als :, /, |, ., -, _ und # auf.

Serialisierung und die Sicherheitshinweis zu Marshal

Standardmäßig verwendet Dalli Rubys Marshal für die Serialisierung. Die README warnt, dass das Deserialisieren nicht vertrauenswürdiger Daten mit Marshal zu Remote Code Execution führen kann, und empfiehlt, beim Caching von benutzergesteuerten Daten einen sichereren Serializer wie JSON zu verwenden. Das Beispiel zeigt Dalli::Client.new('localhost:11211', serializer: JSON). Die README erwähnt auch die feingranulare Steuerung der Datenserialisierung und -komprimierung als unterstütztes Feature, geht aber nicht näher darauf ein, wie die Komprimierung konfiguriert wird. Die README verweist auch auf den 5.0-Upgrade.md-Leitfaden für Upgrade-Informationen.

OpenTelemetry-Tracing ohne Konfiguration

Dalli instrumentiert Operationen automatisch mit OpenTelemetry, wenn das SDK vorhanden ist, und erfordert außer dem Hinzufügen der OpenTelemetry-Gems keine Konfiguration. Es erstellt Spans für Einzelkey-Operationen wie get, set, delete, add, replace, incr und decr; Multi-Key-Operationen wie get_multi, set_multi und delete_multi; sowie fortgeschrittene Operationen wie get_with_metadata und fetch_with_lock. Alle Spans enthalten die Attribute db.system=memcached und db.operation; Einzelkey-Operationen enthalten auch server.address. Multi-Key-Operationen enthalten Treffer- und Fehltrefferzahlen für get_multi. Ausnahmen werden auf Spans aufgezeichnet, der Span-Status wird auf Fehler gesetzt und die Ausnahme wird erneut ausgelöst. Die Instrumentierung kann zur Laufzeit mit Dalli::Instrumentation.disable! deaktiviert oder ein benutzerdefinierter Tracer zugewiesen werden. Wenn OpenTelemetry nicht vorhanden ist, gibt die README an, dass es keinen Overhead gibt, da der Tracing-Code beim Start einmal prüft und die Instrumentierungslogik vollständig umgeht, wenn das SDK nicht geladen ist.

Entwicklung, Beitrag und Lizenz

Die README beschreibt den Entwicklungsworkflow: Führen Sie bin/setup aus, um Abhängigkeiten zu installieren, verwenden Sie bin/console für eine interaktive Eingabeaufforderung und bundle exec rake install, um das Gem lokal zu installieren. Die Beitragsrichtlinien finden Sie in CONTRIBUTING.md, einschließlich einer Richtlinie zu KI-generierten Beiträgen. Das Projekt dankt Mike Perham für die ursprüngliche Autorenschaft, Eric Wong für die Hilfe mit kgio, Brian Mitchell für remix-stash und CouchBase für das Sponsoring. Die Lizenz ist MIT, wie in den Repository-Metadaten und der LICENSE-Datei angegeben, mit Urheberrecht bei Mike Perham und Peter M. Goldstein. Die Lizenz gewährt die Erlaubnis, Kopien der Software zu verwenden, zu kopieren, zu modifizieren, zu mergen, zu veröffentlichen, zu verteilen, zu unterlizenzieren und zu verkaufen, und lehnt Gewährleistung und Haftung ab. Die README verweist auch auf ein Wiki für Benutzerdokumentation, ein Diskussionsforum und einen Bug-Tracker.

Redaktionelles Fazit

Dalli wird von Peter M. Goldstein gepflegt, Mike Perham ist der ursprüngliche Autor, und es ist unter der MIT-Lizenz veröffentlicht. Die README verweist für die Benutzerdokumentation auf das Wiki und für Ankündigungen und Fragen auf GitHub Discussions.

Offizielle Quellen

  1. Official README
  2. Project repository
  3. Release notes
Community-Notizen

Community-Notizen