Bibliothèque / SDK
petergoldstein/dalli avatar
petergoldstein/dalli

Dalli est un client Ruby pour Memcached, conçu pour accéder à un cache distribué depuis une application

Ce projet transforme « High performance memcached client for Ruby. Valid examples: :, /, |, ., -, _, # Security Note By default, Dalli uses Ruby's Marshal for serialization. » en une solution open source exploitable, avec une chaîne d’outils réutilisable et des moyens d’intégration pour des cas d’usage concrets.

3 113 étoiles468 forksRubyMIT
GitHub

En bref

De quoi s’agit-il ?
Dalli est un client Ruby pour Memcached, conçu pour accéder à un cache distribué depuis une application. Le dépôt est pertinent pour une application Ruby déjà organisée autour de Memcached, surtout si elle doit contrôler les options de connexion et de sérialisation.
À qui s’adresse-t-il ?
Le dépôt est pertinent pour une application Ruby déjà organisée autour de Memcached, surtout si elle doit contrôler les options de connexion et de sérialisation. La première vérification doit porter sur les éléments propres à dalli, notamment les commandes, fichiers et limites cités par son README.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 30 jours.
En quel langage est-il écrit ?
Principalement Ruby, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Un client pur Ruby pour les serveurs memcached : dalli

Dalli est un client Ruby pour Memcached, conçu pour accéder à un cache distribué depuis une application.

Dalli est un client memcached pur Ruby haute performance. Le README énumère la prise en charge de configurations simples et complexes, la bascule entre instances, le contrôle fin de la sérialisation et de la compression des données, le fonctionnement thread-safe, les connexions SSL/TLS et le traçage OpenTelemetry. Le nom du projet est une variante de Salvador Dali, faisant référence à son tableau La Persistance de la mémoire. Le mainteneur actuel est Peter M. Goldstein ; Mike Perham a créé le projet à l'origine et en a été le mainteneur pendant de nombreuses années. La description du dépôt l'identifie comme un client memcached haute performance pour Ruby.

La bonne lecture de ce dépôt commence par sa promesse précise, puis par les contraintes que le README expose. Les noms de commandes, les chemins et les formats ne sont pas des détails décoratifs : ils déterminent ce qui peut être reproduit et ce qui reste une affirmation du projet. Pour une équipe, le point important est de relier chaque capacité à son environnement réel, à ses dépendances et à la surface de maintenance. Cette distinction évite de transformer une liste de fonctions en garantie générale. Les résultats annoncés appartiennent au contexte décrit par les auteurs ; ils demandent donc une comparaison avec les entrées, les versions et les plateformes réellement utilisées. Le dépôt reste utile quand cette limite est acceptée, car il donne un point de départ concret et des traces consultables. Repère 1 pour dalli.

Exigences et compatibilité des versions de memcached : dalli

Le README spécifie Ruby 3.3 ou ultérieur, avec également le support de JRuby, et memcached 1.6.27 ou ultérieur. Dalli est testé à la fois contre la version minimale prise en charge de memcached et la dernière version. Les serveurs 1.6.x antérieurs ne sont pas pris en charge car le protocole meta rejette les indicateurs inconnus ; les fonctionnalités ajoutées après la sortie d'un serveur échouent avec CLIENT_ERROR invalid flag plutôt que de dégrader proprement. Cela fait du plancher de version une exigence stricte plutôt qu'une suggestion.

La bonne lecture de ce dépôt commence par sa promesse précise, puis par les contraintes que le README expose. Les noms de commandes, les chemins et les formats ne sont pas des détails décoratifs : ils déterminent ce qui peut être reproduit et ce qui reste une affirmation du projet. Pour une équipe, le point important est de relier chaque capacité à son environnement réel, à ses dépendances et à la surface de maintenance. Cette distinction évite de transformer une liste de fonctions en garantie générale. Les résultats annoncés appartiennent au contexte décrit par les auteurs ; ils demandent donc une comparaison avec les entrées, les versions et les plateformes réellement utilisées. Le dépôt reste utile quand cette limite est acceptée, car il donne un point de départ concret et des traces consultables. Repère 2 pour dalli.

Espaces de noms et séparateurs de clés : dalli

Dalli prend en charge les espaces de noms pour partitionner un cache et éviter les collisions de clés entre différentes applications ou environnements. Un espace de noms peut être une chaîne statique, comme dans Dalli::Client.new('localhost:11211', namespace: 'myapp'), ou un Proc évalué à chaque opération, comme celui qui lit un ID de locataire à partir de l'état local du thread. Le séparateur par défaut entre l'espace de noms et la clé est un deux-points, mais il peut être modifié avec l'option namespace_separator, qui doit être un seul caractère non alphanumérique. Le README liste des exemples valides comme :, /, |, ., -, _ et #.

La bonne lecture de ce dépôt commence par sa promesse précise, puis par les contraintes que le README expose. Les noms de commandes, les chemins et les formats ne sont pas des détails décoratifs : ils déterminent ce qui peut être reproduit et ce qui reste une affirmation du projet. Pour une équipe, le point important est de relier chaque capacité à son environnement réel, à ses dépendances et à la surface de maintenance. Cette distinction évite de transformer une liste de fonctions en garantie générale. Les résultats annoncés appartiennent au contexte décrit par les auteurs ; ils demandent donc une comparaison avec les entrées, les versions et les plateformes réellement utilisées. Le dépôt reste utile quand cette limite est acceptée, car il donne un point de départ concret et des traces consultables. Repère 3 pour dalli.

Sérialisation et note de sécurité sur Marshal : dalli

Par défaut, Dalli utilise Marshal de Ruby pour la sérialisation. Le README avertit que désérialiser des données non fiables avec Marshal peut conduire à une exécution de code à distance, et recommande d'utiliser un sérialiseur plus sûr comme JSON lors de la mise en cache de données contrôlées par l'utilisateur. L'exemple montre Dalli::Client.new('localhost:11211', serializer: JSON). Le README mentionne également le contrôle fin de la sérialisation et de la compression des données comme une fonctionnalité prise en charge, mais il n'entre pas dans les détails sur la façon de configurer la compression. Le README renvoie également au guide 5.0-Upgrade.md pour les informations de mise à niveau.

La bonne lecture de ce dépôt commence par sa promesse précise, puis par les contraintes que le README expose. Les noms de commandes, les chemins et les formats ne sont pas des détails décoratifs : ils déterminent ce qui peut être reproduit et ce qui reste une affirmation du projet. Pour une équipe, le point important est de relier chaque capacité à son environnement réel, à ses dépendances et à la surface de maintenance. Cette distinction évite de transformer une liste de fonctions en garantie générale. Les résultats annoncés appartiennent au contexte décrit par les auteurs ; ils demandent donc une comparaison avec les entrées, les versions et les plateformes réellement utilisées. Le dépôt reste utile quand cette limite est acceptée, car il donne un point de départ concret et des traces consultables. Repère 4 pour dalli.

Traçage OpenTelemetry sans configuration : dalli

Dalli instrumente automatiquement les opérations avec OpenTelemetry lorsque le SDK est présent, sans aucune configuration requise au-delà de l'ajout des gems OpenTelemetry. Il crée des spans pour les opérations à clé unique telles que get, set, delete, add, replace, incr et decr ; les opérations multi-clés comme get_multi, set_multi et delete_multi ; et les opérations avancées telles que get_with_metadata et fetch_with_lock. Tous les spans incluent les attributs db.system=memcached et db.operation ; les opérations à clé unique incluent également server.address. Les opérations multi-clés incluent des compteurs de hits et de misses pour get_multi. Les exceptions sont enregistrées sur les spans, le statut du span est défini sur erreur, puis l'exception est relancée. L'instrumentation peut être désactivée à l'exécution avec Dalli::Instrumentation.disable! ou un traceur personnalisé peut être assigné. Lorsqu'OpenTelemetry est absent, le README indique qu'il n'y a aucun surcoût car le code de traçage vérifie une fois au démarrage et contourne entièrement la logique d'instrumentation lorsque le SDK n'est pas chargé.

La bonne lecture de ce dépôt commence par sa promesse précise, puis par les contraintes que le README expose. Les noms de commandes, les chemins et les formats ne sont pas des détails décoratifs : ils déterminent ce qui peut être reproduit et ce qui reste une affirmation du projet. Pour une équipe, le point important est de relier chaque capacité à son environnement réel, à ses dépendances et à la surface de maintenance. Cette distinction évite de transformer une liste de fonctions en garantie générale. Les résultats annoncés appartiennent au contexte décrit par les auteurs ; ils demandent donc une comparaison avec les entrées, les versions et les plateformes réellement utilisées. Le dépôt reste utile quand cette limite est acceptée, car il donne un point de départ concret et des traces consultables. Repère 5 pour dalli.

Développement, contribution et licence : dalli

Le README décrit le flux de développement : exécutez bin/setup pour installer les dépendances, utilisez bin/console pour une invite interactive et bundle exec rake install pour installer la gem localement. Les directives de contribution se trouvent dans CONTRIBUTING.md, qui inclut une politique sur les contributions générées par l'IA. Le projet remercie Mike Perham pour la création originale, Eric Wong pour l'aide avec kgio, Brian Mitchell pour remix-stash et CouchBase pour le parrainage. La licence est MIT, comme indiqué dans les métadonnées du dépôt et le fichier LICENSE, avec le droit d'auteur détenu par Mike Perham et Peter M. Goldstein. La licence accorde la permission d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et vendre des copies du logiciel, et elle décline toute garantie et responsabilité. Le README renvoie également à un wiki pour la documentation utilisateur, un forum de discussion et un suivi de bogues.

La bonne lecture de ce dépôt commence par sa promesse précise, puis par les contraintes que le README expose. Les noms de commandes, les chemins et les formats ne sont pas des détails décoratifs : ils déterminent ce qui peut être reproduit et ce qui reste une affirmation du projet. Pour une équipe, le point important est de relier chaque capacité à son environnement réel, à ses dépendances et à la surface de maintenance. Cette distinction évite de transformer une liste de fonctions en garantie générale. Les résultats annoncés appartiennent au contexte décrit par les auteurs ; ils demandent donc une comparaison avec les entrées, les versions et les plateformes réellement utilisées. Le dépôt reste utile quand cette limite est acceptée, car il donne un point de départ concret et des traces consultables. Repère 6 pour dalli.

Conclusion éditoriale

Le dépôt est pertinent pour une application Ruby déjà organisée autour de Memcached, surtout si elle doit contrôler les options de connexion et de sérialisation. La première vérification doit porter sur les éléments propres à dalli, notamment les commandes, fichiers et limites cités par son README.

Sources officielles

  1. Official README
  2. Project repository
  3. Release notes
Notes de la communauté

Notes de la communauté