web-dev-qa-db-fra.com

Redis cache vs utilisation directe de la mémoire

Je n'ai pas encore utilisé Redis, mais j'en ai entendu parler et j'ai l'intention de l'essayer comme stockage en cache.

J'ai entendu Redis utiliser la mémoire comme base de données de cache, quelle est donc la différence si j'utilise une variable comme type de données d'objet ou de dictionnaire pour stocker des données? comme:

var cache = {
    key: {

    },
    key: {

    }
    ...
}

Quel est l'avantage de Redis?

108
hh54188

Redis est un serveur de structure de données distant. Il est certainement plus lent que de simplement stocker les données dans la mémoire locale (car cela implique des allers-retours entre sockets pour extraire/stocker les données). Cependant, il apporte également des propriétés intéressantes:

  • Tous les processus de vos applications peuvent accéder à Redis, éventuellement en s'exécutant sur plusieurs nœuds (ce que la mémoire locale ne peut pas accomplir).

  • Le stockage en mémoire Redis est assez efficace et fait l'objet d'un processus séparé. Si l'application s'exécute sur une plate-forme dont la mémoire est garnie (node.js, Java, etc.), elle permet de gérer un cache/magasin de mémoire beaucoup plus volumineux. En pratique, les très grands tas ne fonctionnent pas bien avec les langages ramassés avec les ordures.

  • Redis peut conserver les données sur le disque si nécessaire.

  • Redis est un peu plus qu'un simple cache: il fournit diverses structures de données, diverses stratégies d'éviction d'éléments, des files d'attente bloquantes, pub/sub, atomicity, Lua scripting, etc.

  • Redis peut répliquer son activité avec un mécanisme maître/esclave afin de mettre en œuvre la haute disponibilité.

En gros, si vous avez besoin que votre application évolue sur plusieurs nœuds partageant les mêmes données, il vous faudra quelque chose comme Redis (ou tout autre magasin de clés/valeurs distant).

181
Didier Spezia