Explorer Garnet : un cache-store de nouvelle génération par Microsoft

Garnet est un projet passionnant de Microsoft Research qui répond à la demande toujours croissante de mécanismes de stockage de données efficaces pour prendre en charge les applications et services Web interactifs. Entrons dans les détails :
Présentation de Garnet : un cache-store de nouvelle génération
Qu’est-ce que le grenat ?
Garnet est un système de stockage de cache open source de nouvelle génération conçu pour offrir des performances élevées, une extensibilité et une faible latence. Les chercheurs de Microsoft travaillent sur Garnet depuis près d’une décennie, dans le but de relever les défis posés par les progrès rapides des applications et services Web interactifs.
Avantages clés du grenat :
- Gains de performances: Garnet a été déployé dans divers cas d’utilisation chez Microsoft, notamment la plateforme Windows & Web Experiences, Azure Resource Manager et Azure Resource Graph. Ses améliorations de performances par rapport aux magasins de cache existants sont significatives.
- Extensibilité: Contrairement à certains systèmes de cache existants, Garnet est explicitement conçu pour être facilement extensible par les développeurs d’applications. Cela signifie que vous pouvez exploiter ses capacités et l’adapter à vos besoins spécifiques.
- Ensemble de fonctionnalités riches: Garnet prend en charge plus que de simples opérations get/set. Il propose des API pour les chaînes brutes, les structures de données analytiques (comme Hyperloglog) et les types de données complexes (tels que les ensembles triés et le hachage). De plus, il permet aux utilisateurs de vérifier et de récupérer le cache, de créer des fragments de données, de conserver des copies répliquées et même de gérer des transactions.
- Évolutif pour les threads: Garnet s’adapte bien au sein d’un seul nœud, ce qui le rend adapté aux architectures multicœurs.
- Source ouverte: Garnet est désormais disponible en téléchargement open source sur GitHub. Microsoft vise à encourager la collaboration, la recherche universitaire et le développement ultérieur dans ce domaine critique en le rendant open source.
Cas d’utilisation et déploiement
Garnet a déjà trouvé sa place dans divers services Microsoft, démontrant ainsi son applicabilité pratique. Qu’il s’agisse d’applications Windows, d’expériences Web ou de gestion de ressources dans Azure, Garnet peut vous aider à améliorer les performances et à réduire les coûts opérationnels.
Comment démarrer avec Garnet
Si vous souhaitez explorer davantage Garnet, rendez-vous sur le référentiel officiel Garnet GitHub pour accéder au code source, à la documentation et aux discussions de la communauté.
Utiliser Docker pour le travail localhost
docker run --network=host --ulimit memlock=-1 ghcr.io/microsoft/garnet
Sous Linux configuré avec l’authentification de base, remplacez {{replace_password_here}} par votre mot de passe
docker run --network=host --ulimit memlock=-1 ghcr.io/microsoft/garnet --auth Password --password {{replace_password_here}}
Exemples
Grenat avec application console
La mise en œuvre de Garnet est aussi simple que RedisStack.
using System; using System.Threading.Tasks; using Garnet.Client; namespace GarnetClientSample { class Program { static async Task Main(string[] args) { // Replace with your Garnet server details (hostname and port) var garnetServer = new GarnetServer("localhost", 6379); try { // Connect to the Garnet server await garnetServer.ConnectAsync(); // Set a key-value pair await garnetServer.SetAsync("myKey", "Hello, Garnet!"); // Retrieve the value for a key var retrievedValue = await garnetServer.GetAsync("myKey"); Console.WriteLine($"Retrieved value: {retrievedValue}"); // Delete the key await garnetServer.DeleteAsync("myKey"); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } finally { // Clean up and disconnect await garnetServer.DisconnectAsync(); } } } }
Garnet avec ASP.NET WebAPI C#
Dans Program.cs ou startup.cs
using Garnet.Server; // ... public void ConfigureServices(IServiceCollection services) { // Other services... services.AddGarnet(options => { options.Hostname = "localhost"; // Garnet server hostname options.Port = 6379; // Garnet server port }); }
En classe Contrôleur
using System; using System.Threading.Tasks; using Garnet.Client; using Microsoft.AspNetCore.Mvc; namespace GarnetWebApi.Controllers { [ApiController] [Route("api/[controller]")] public class CacheController : ControllerBase { private readonly GarnetServer _garnetServer; public CacheController(GarnetServer garnetServer) { _garnetServer = garnetServer; } [HttpGet("{key}")] public async Task<IActionResult> Get(string key) { try { var value = await _garnetServer.GetAsync(key); return Ok(value); } catch (Exception ex) { return BadRequest($"Error: {ex.Message}"); } } [HttpPost("{key}")] public async Task<IActionResult> Set(string key, [FromBody] string value) { try { await _garnetServer.SetAsync(key, value); return Ok("Value set successfully!"); } catch (Exception ex) { return BadRequest($"Error: {ex.Message}"); } } } }
Garnet est bien plus que cela, alors n’hésitez pas à l’essayer dans les exigences de cache de votre projet ou à l’essayer juste pour le plaisir.
Bon codage 🚀
Sources :
VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE
Source link