1. Introduction :
Au cours des dernières années, les bases de données NoSQL sont devenues synonymes de solutions de stockage de données à haute concurrence et massives, et les produits correspondants ont également poussé comme des champignons après la pluie. Cependant, seule une poignée de produits peuvent se démarquer parmi de nombreux produits, tels que Redis, MongoDB, BerkeleyDB et CouchDB. Étant donné que chaque produit a des caractéristiques différentes, leurs scénarios d'application présentent également certaines différences. Seule une brève description est donnée ci-dessous :
1) BerkeleyDB est une base de données embarquée open source extrêmement populaire, qui peut être utilisée dans les moteurs de stockage. plus de situations. Par exemple, BerkeleyDB a été utilisé comme moteur de stockage de MySQL avant d'être acquis par Oracle. On peut prédire que ce produit a une excellente évolutivité simultanée, prend en charge les transactions et les transactions imbriquées, ainsi que le stockage massif de données et d'autres fonctionnalités importantes. valeur utilisable extrêmement élevée dans le stockage de données en temps réel. Cependant, il convient de souligner que la licence de ce produit est GPL, ce qui signifie que son utilisation n'est pas gratuite dans tous les cas.
2). MongoDB est défini comme un serveur de base de données orienté document Contrairement à BerkeleyDB, cette base de données peut fonctionner de manière indépendante et fournir des services de données associés comme les autres serveurs de bases de données relationnelles. De la documentation officielle de ce produit, nous pouvons apprendre que MongoDB est principalement adapté aux forums ou aux sites de blogs à haute concurrence. Les principales caractéristiques de ces sites Web sont un nombre élevé de visites simultanées, plus de lectures et moins d'écritures, de grandes quantités de données et des relations logiques simples. et les documents comme source de données principale, etc. Comme BerkeleyDB, la licence de ce produit est GPL.
3). Redis, un serveur de base de données NoSQL typique, comparé à BerkeleyDB, il peut s'exécuter indépendamment sur son propre serveur hôte en tant que programme de service. Souvent, les gens considèrent Redis simplement comme un serveur de base de données clé/valeur, mais ce n'est pas le cas dans la version actuelle, en plus de la clé/valeur, Redis prend également en charge les structures de données telles que la liste, le hachage, l'ensemble et l'ensemble ordonné. , donc les utilisations sont également plus larges. Concernant ce malentendu, le site officiel de Redis a également fourni des éclaircissements correspondants. Différent des deux produits ci-dessus, la licence de Redis est la licence Apache, qui est entièrement gratuite pour le moment.
4). Memcached, serveur de mise en cache des données. Pourquoi une explication de ce produit est-elle donnée ici ? Très simple, car je pense qu'il ressemble le plus à Redis en termes d'utilisation. Après tout, il s'agit d'une série de blogs techniques sur Redis. C'est pourquoi nous comparerons brièvement ces deux produits. Parlons d'abord de la plus grande différence entre eux. Memcached ne fournit qu'un service de mise en cache des données. Une fois le serveur en panne, toutes les données précédemment mises en cache dans la mémoire disparaîtront. Par conséquent, on peut voir que memcached ne fournit aucune forme de données. fonction de persistance. Redis fournit une telle fonctionnalité. De plus, Redis fournit des structures de stockage de données plus riches, telles que Hash et Set. Quant à leurs similitudes, il y a deux points principaux : l’un est qu’ils sont totalement gratuits et l’autre est que les formulaires de commande qu’ils proposent sont très similaires.
2. Avantages de Redis :
1). Par rapport à d'autres produits NoSQL, Redis est extrêmement facile à utiliser, donc pour les développeurs qui ont de l'expérience dans l'utilisation de produits similaires, vous pouvez utiliser Redis pour construisez votre propre plateforme en un jour ou deux, voire quelques heures.
2) Tout en résolvant de nombreux problèmes courants, il fournit également des solutions pertinentes à certains problèmes personnalisés, tels que les moteurs d'indexation, les classements statistiques, les services de file d'attente de messages, etc.
3. Les principaux problèmes de Redis dans la version actuelle :
1). Il n'y a pas de support de la plate-forme Windows dans la version officielle, et la version officielle publiée ne prend en charge que les versions Unix et MacOSX. plates-formes.
2). La prise en charge du cluster n'est pas fournie, mais selon le site officiel, cette fonctionnalité devrait être ajoutée dans la version 2.6.
3). Dans la fonction Publication/Abonnement, si le maître tombe en panne, l'esclave ne peut pas être automatiquement promu maître.
4. Comparaison avec la base de données relationnelle :
Dans la version actuelle (2.4.7) de Redis, il prend en charge cinq types de données différents. Un seul d'entre eux, le type chaîne, peut être considéré comme une structure clé-valeur, tandis que d'autres types de données le sont. scénarios d'application qui s'appliquent à leurs caractéristiques respectives, et nous expliquerons les détails spécifiques dans les prochains blogs de cette série.
Par rapport aux bases de données relationnelles, en raison de sa structure de stockage relativement simple, Redis ne peut pas fournir un bon support pour les relations logiques complexes. Cependant, dans les scénarios applicables à Redis, nous pouvons en tirer une amélioration significative. Malgré cela, Redis nous fournit toujours quelques concepts de base qu'une base de données devrait avoir, tels que : vous pouvez choisir d'ouvrir différentes bases de données dans la même connexion. Cependant, la différence est que les bases de données dans Redis sont nommées par des numéros. la base de données ouverte sous est 0. Si vous envisagez de changer de base de données pendant l'exécution du programme, vous pouvez utiliser la commande Redis select pour ouvrir d'autres bases de données, telles que select 1. Si vous souhaitez revenir ultérieurement à la base de données par défaut, exécutez simplement select 0.
En termes de stockage de données, Redis suit l'idée dominante des bases de données NoSQL existantes, c'est-à-dire que la clé est l'identifiant unique pour la récupération des données. Nous pouvons simplement le comprendre comme la clé de l'index dans la base de données relationnelle. , et Value est utilisé comme stockage de données. L'objet principal, chaque Value est associé à une clé, qui est comme l'emplacement où les données physiques de l'index sont stockées dans la table de données. Dans Redis, Value sera considéré comme un flux d'octets binaires utilisé pour stocker des données dans n'importe quel format, tel que Json, XML et des flux d'octets d'objets sérialisés, etc., nous pouvons donc également l'imaginer comme un champ de type BLOB dans RDB. On peut voir que lors de l'exécution d'une requête de données, nous ne pouvons utiliser Key que comme condition de notre requête. Bien sûr, nous pouvons également appliquer certaines techniques fournies dans Redis pour utiliser Value comme clé d'autres données. Nous couvrirons ces connaissances dans. les blogs suivants présentent.
5. Comment conserver les données en mémoire :
Par défaut, Redis fera référence au nombre de modifications de données dans la base de données actuelle, et après avoir atteint un certain seuil, il stockera un instantané de la base de données sur Sur le disque, nous pouvons définir le seuil via le fichier de configuration. Normalement, nous pouvons également configurer Redis pour qu'il enregistre régulièrement. Par exemple, lorsque plus de 1 000 données clés sont modifiées, Redis effectuera une opération de persistance des données toutes les 60 secondes. Le paramètre par défaut est que s'il y a 9 modifications de données ou moins, Redis persistera toutes les 15 minutes.
Il ressort de la solution mentionnée ci-dessus que si cette méthode est adoptée, l'efficacité d'exécution de Redis sera très efficace chaque fois qu'une nouvelle modification de données se produira, seules les données mises en cache dans la mémoire se produiront. les modifications ne seront pas conservées immédiatement sur le disque, évitant ainsi les E/S disque dans la plupart des opérations de modification. Cependant, les choses ont souvent deux faces. Dans cette méthode, nous gagnons en efficacité, mais nous perdons en fiabilité des données. Si le serveur sur lequel se trouve Redis tombe en panne avant que l'instantané de mémoire ne soit conservé sur le disque, toutes les données modifiées qui n'ont pas été écrites sur le disque seront perdues. Afin de garantir une haute fiabilité des données, Redis fournit également un autre mécanisme de persistance des données : le mode Append. Si le serveur Redis est configuré de cette manière, chaque fois qu'une modification des données se produit, elle sera immédiatement conservée sur le disque.
Ce qui précède est le contenu du didacticiel Redis (1) : Introduction à Redis Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !