web-dev-qa-db-fra.com

Différence entre le cache en mémoire et la base de données en mémoire

Je me demandais si je pouvais obtenir une explication entre les différences entre le cache In-Memory (redis, memcached), les grilles de données In-Memory (gemfire) et la base de données In-Memory (VoltDB). J'ai du mal à distinguer les caractéristiques clés entre les 3.

7
Yolo49

J'ajouterais que les éléments de la catégorie "base de données" ont généralement plus de fonctionnalités pour protéger et répliquer vos données qu'un simple "cache". Le cache est temporaire (généralement) là où les données de la base de données doivent être persistantes. De nombreuses solutions de cache que j'ai observées ne persistent pas sur le disque. Par conséquent, si vous perdiez l'alimentation de tout votre cluster, vous perdriez tout ce qui se trouvait dans le cache.

Cependant, certaines solutions de cache intègrent des fonctionnalités de persistance et de réplication, ce qui rend la ligne floue.

1
Beaker

Je ne sais pas à propos de gemfire et VoltDB, mais même memcached et redis sont très différents. Memcached est une simple mise en cache, un endroit idéal pour stocker des variables de manière très complexe, puis les récupérer afin que vous n'ayez pas à consulter une base de données ou un fichier chaque fois que vous avez besoin de ces données. Les types de variable sont très simples. En revanche, Redis est une base de données en mémoire, avec une sélection très intéressante de types de données. Il possède un excellent type de données pour la création de listes triées, ce qui est idéal pour des applications telles que les tableaux de classement. Vous ajoutez votre nouvel enregistrement aux données et celui-ci est trié automatiquement.

Donc, je ne m'attarderais pas trop sur les catégories. Vous devez vraiment examiner chaque outil différemment pour voir ce qu'il peut faire pour vous et pour l'application que vous créez. C'est un peu comme essayer de faire des comparaisons sur des bases de données nosql - elles sont toutes très différentes et font des choses bien.

1
CargoMeister

Cache - Par définition, cela signifie qu'il est stocké en mémoire. Toute donnée stockée dans la mémoire (RAM) pour un accès plus rapide est appelée cache. Exemples: Ehcache, Memcache Généralement, vous placez un objet dans le cache avec String en tant que clé et accédez au cache à l'aide de la clé. C'est très simple. Cela dépend de l'application à laquelle accéder à la base de données cahce vs. Aucun traitement complexe ne se produit dans le cache. Si le cache s'étend sur plusieurs machines, il est appelé cache distribué. Par exemple, Netflix utilise EVCAche qui est construit sur Memcache pour stocker les recommandations de film des utilisateurs que vous voyez sur l'écran d'accueil.

Dans la base de données en mémoire - Il possède toutes les fonctionnalités d’un cache, plus des fonctionnalités de traitement/interrogation. Redis tombe dans cette catégorie. Redis prend en charge plusieurs structures de données et vous pouvez interroger les données dans Redis (des exemples comme obtenir les 10 derniers éléments consultés, obtenir l'élément le plus utilisé, etc.). Il peut s’étendre sur plusieurs ordinateurs et est généralement très performant et prend également en charge la persistance sur disque si nécessaire. Par exemple, Twitter utilise la base de données Redis pour stocker les informations de chronologie.

0
VimalKumar