Maison  >  Article  >  Java  >  java : Que fait Redis ?

java : Que fait Redis ?

怪我咯
怪我咯original
2017-06-26 11:45:144547parcourir

Un aperçu

1. Redis

Redis est utilisé Une base de données noSQL basée sur la mémoire écrite en langage C qui prend en charge la persistance et la valeur-clé hautes performances. Elle stocke principalement des données avec un volume d'accès important, des changements fréquents et de faibles exigences de sécurité.

2.NoSQL

Base de données non relationnelle. Une base de données relationnelle est une base de données construite sur la base d'un modèle relationnel, qui reflète les relations entre les entités du monde réel.

3.Protocole BSD

Le protocole open source BSD est un protocole qui donne aux utilisateurs une grande liberté pour modifier le code source et le publier. code de modifications après.

4. Middleware de messages

Middleware qui prend en charge et assure l'envoi et la réception synchrones ou asynchrones de messages entre applications distribuées.

5. File d'attente des messages

Une structure de données pour stocker les messages intégrée au middleware de messages afin de contrôler efficacement le processus d'envoi et de réception de messages. Utilisez la file d’attente, premier entré, premier sorti.

6. SOA

L'architecture orientée services, une architecture orientée services, divise l'application en plusieurs applications à gros grain et faiblement couplées. modules, puis connectez ces modules via des interfaces neutres.

Deux noms de clés

key01::key02 : Plusieurs calques, les calques adjacents sont séparés par :

Trois opérations courantes

  • redis-server.exe redis-windows-conf : Démarrez le serveur.

  • redis-cli.exe -h 127.0.0.1 -p 6379 : Connectez-vous à un service Redis via IP et port.

  • clés* : Afficher toutes les clés de la base de données actuelle.

  • config get * : Obtenez toutes les informations de configuration.

  • commande help : Afficher la signification de l'opération.

  • help @string : Afficher toutes les opérations sur les chaînes.

  • renommer key01 key02 : Renommer la clé.

  • clé de type : obtenez le type de données.

  • del key : supprimer la clé.

  • flushdb : Effacer la base de données actuelle.

  • flushall : Effacer toutes les bases de données.

Quatre cordes

1. Ajouter

  • définir la valeur clé : attribuer une valeur.

  • mset key01 value01 key02 value02 : Attribuez des valeurs à plusieurs clés, atomiques, réussissez en même temps et échouez en même temps.

  • set key value nx : ne peut être défini que si la clé n'existe pas.

  • set key value xx : ne peut être défini que lorsque la clé existe.

  • définir la valeur de la clé après les secondes : définir le délai d'expiration de la clé.

  • valeur clé getset : obtenez d'abord la valeur, puis attribuez-la.

2. Supprimer

del key : supprimer la clé.

3. Changer

  • touche incr : augmenter de 1.

  • incrément de touche incrby : augmente le montant spécifié.

  • incrbyfloat key incrément : augmente la quantité spécifiée par les données de type float.

  • touche de diminution : moins 1.

  • decrby key decrement : Diminuer le montant spécifié.

4. Cochez

  • obtenir la clé : obtenir la valeur.

  • touche strlen : obtenez la longueur de la chaîne.

  • clé existe : renvoie 1 si elle existe, 0 si elle n'existe pas

<.> 5. Index

En partant du début, l'index part de 0, 1, 2....
En partant de la fin, le l'indice commence à -1, -2.

  • valeur d'index de clé setrange : remplacer à partir de la position d'index.

  • getrange key start end : récupère la valeur de la plage d'index spécifiée.

  • clé getrange 0 -1 : Obtenez tout.

Cinq LinkedList

1. LinkedList, une liste doublement chaînée, a une faible efficacité de requête et un ajout et une suppression élevés efficacité.

2. Ajoutez

  • Clé LPUSH valeur01 valeur02 : Poussez les éléments depuis la gauche.

  • Clé RPUSH valeur02 valeur02 : Poussez l'élément depuis la droite.

3. Supprimer

  • LPOP KEY : faire apparaître un élément à partir de la gauche, tout à fait Pour supprimer l'élément de la liste.

  • TOUCHE RPOP : Pop un élément par la droite.

  • ltrim key start end : Supprime les éléments en dehors de la plage spécifiée.

valeur du nombre de clés lrem : supprimez le nombre d'éléments avec une valeur dans la liste chaînée.

  • count>0 : Supprimer à gauche.

  • count<0 : Supprimer à partir de la droite.

  • count=0 : Supprimer tout.

4. Changez la touche

LINSERT avant/après oldValue newValue : Insérez des éléments avant et après l'élément spécifié, si spécifié Si l'élément n'existe pas, aucune opération n'est effectuée. S'il y a plusieurs éléments spécifiés, seul le premier élément sera exploité.

RPOPLPUSH key01 key02 : Pop un élément du côté droit de key01 et poussez-le vers le côté gauche de key02.

5. Vérifiez

clé Allen : La longueur est le nombre d'éléments dans la liste.

6. Index

De gauche à droite, en partant de 0, de droite à gauche, en partant de -1 ;

  • LRANGE key start end : récupère les éléments dans la plage d'index spécifiée.

  • Touche LRANGE 0 -1 : Récupère tous les éléments.

  • Index clé LINDEX : obtenez la valeur de la position d'index spécifiée.

  • Valeur d'index de clé LSET : définit la valeur de la position d'index spécifiée.

Six hachages

L'espace valeur clé stocke non seulement la valeur clé, mais également d'autres informations, telles que timeout Temps, donc la clé prend beaucoup de place. Vous devez réduire le nombre de clés et stocker les données associées dans la même clé. Cela génère un hachage de type de données, qui est équivalent à HashMap.

Dans le hachage, la durée du délai d'attente ne peut être définie que sur la clé, pas sur le champ.

1. Ajout de

  • valeur du champ clé hset : attribuez une valeur à un champ dans la clé.

  • hmset key field01 value01 field02 value02 : Attribuez des valeurs à plusieurs champs en même temps.

2. Supprimer

  • champ clé hdel : Supprimez le champ spécifié dans la clé.

3. Modifier

  • incrément de champ de clé hincrby : Ajouter un champ entier.

  • hincrbyfloat field incrément : Augmente la valeur d'un champ à virgule flottante.

4. Cochez

  • hget key field : obtenez la valeur du champ spécifié en clé.

  • hmget key field01 field02 : Obtenez les valeurs de plusieurs champs.

  • Clé hgetall : Obtenez tous les champs et leurs valeurs correspondantes.

  • Clé hkeys : Obtenez tous les noms de champs.

  • Clé kvals : Obtenez les valeurs de tous les champs.

  • champ clé hexists : Déterminez si le champ spécifié existe dans la clé.

  • hlen key : Obtenez le nombre de champs dans la clé.

Sept sets

Non ordonné, non répétable. Ce qu'on appelle le désordre signifie que la même collection est interrogée à des moments différents et que les éléments dans la même position de tri sont différents.

1. Ajoutez

  • sadd key value01 vlaue02 : Ajouter un élément.

2. Supprimer

  • srem key value01 value02 : Supprimer l'élément.

  • Touche spop : Supprimer un élément de manière aléatoire.

3. Cochez

  • clé des membres : Obtenir tous les éléments

  • clé srandmember : renvoie un élément de manière aléatoire.

  • clé scard : renvoie le nombre d'éléments.

  • valeur de clé sismember : Déterminez si la valeur existe.

4. Opération d'intersection et d'union

L'opération d'intersection et d'union ne supprimera pas les éléments de l'ensemble opéré .

  • sdiff key01 key02 : Trouvez l'ensemble de différences et supprimez les éléments de key02 de key01. C'est juste une opération et ne supprimera pas les éléments de key01.

  • sdiffstore destination key01 key02 : stocke la différence définie dans la collection spécifiée.

  • suinon key01 key02 : Trouver le syndicat.

  • sninonstore destination key01 key02 : Stocke le résultat de l'union dans la collection spécifiée.

  • sinter key01 key02 : Trouver l'intersection.

  • sinterstore destination key01 key02 : Obtenez l'intersection et stockez-la dans la collection spécifiée.

Huit ensembles triés

Ensemble ordonné, le motif de la commande, chaque élément est associé à une partition, trié selon marquer.

1. Ajoutez

  • clé zadd score01 valeur01 score02 valeur02.

2. Supprimer

  • valeur de la clé zrem : supprimez l'élément spécifié.

  • zremrangebyrank key start end : supprime les éléments dans la plage de tri spécifiée.

  • zremrangebyscore key min max : Supprimez les éléments dans la plage de scores spécifiée.

3. Changer la valeur d'incrément de la clé

  • zincrby : modifier le score.

  • valeur de la clé zrank : Obtenez le tri, de petit à grand, en commençant à 0.

  • valeur clé zrevrank : Obtenez le tri, du plus grand au plus petit, en commençant par 0.

4. Vérifiez

  • zscore key value01 : Obtenez le score.

  • Clé zcard : Obtenez le nombre d'éléments dans l'ensemble.

  • zrange key start end [with scores] : obtenez la valeur de la plage d'index spécifiée.

  • zrangebyscore key min max [limit offset count] : Obtenez la valeur du score dans l'intervalle spécifié. La limite est utilisée pour intercepter les données de comptage à partir du décalage spécifié. . Vous pouvez ajouter ( avant min pour indiquer un intervalle ouvert, et seul min peut être chargé.

  • zcount key min max : obtenez le nombre d'éléments dans l'intervalle de score spécifié.

5. Union

zunionstore destination numKeys key[key...] weights weight aggregate max/min/sum
  • destination : Collection dans laquelle les résultats de l'union sont stockés.

  • numKey : le nombre de collectes participant à l'opération.

  • poids : les poids, c'est-à-dire le pourcentage de scores participant au calcul, sont spécifiés séparément pour chaque ensemble.

  • agrégat : stratégie d'intégration.

  • zinterstore destination numKeys key[key...] poids poids agrégat max/min/somme : opération d'intersection.

Persistance des neuf Rdis

1. Qu'est-ce que la persistance ?

Le processus de sauvegarde des données sur le disque dur est appelé persistance.

2. Méthode de persistance Redis

  • RDB : Redis DB, enregistrez toutes les données à vider sous forme binaire .rdb fichier, activé par défaut.

  • AOF : AppendOnlyFile, enregistre les modifications de la base de données dans un fichier, fermé par défaut.

3.RDB

La persistance RDB générera un fichier dump.rdb, écrasant le fichier d'origine. Mode RDB

  • L'utilisateur émet une opération de sauvegarde : blocage du serveur.

  • L'utilisateur émet une opération bgsave : elle est exécutée en arrière-plan et ne bloque pas le serveur. Le principe est de créer un sous-thread pour générer des fichiers persistants.

  • Configurer dans le fichier de configuration et persister automatiquement lorsque les conditions spécifiées sont remplies. Il s'agit d'une méthode courante. Conditions de configuration : sauvegarde , seulement si au moins le nombre spécifié d'opérations d'écriture se produit dans le délai spécifié, l'opération bgsave sera exécutée pour générer le fichier rdb.

La méthode de persistance RDB enregistre à chaque fois toutes les données de la base de données sur le disque dur, ce qui consomme des ressources système et ne peut pas être exécuté fréquemment afin de garantir cela. l'intervalle RDB est compris entre Pour la sécurité des données, la persistance AOF peut être utilisée en parallèle.

4. AOF

⑴Le processus d'exécution du système écrivant les données de la mémoire dans le fichier : écrivez d'abord les données dans le tampon , puis le tampon. Une fois la zone pleine, le contenu du tampon est écrit dans le fichier.

⑵ Ajouter les opérations de modification de la base de données au fichier, les opérations effectuées en premier étant au début.

⑶Plusieurs modes d'AOP

  • toujours : chaque fois qu'une opération de modification est effectuée, le fichier est écrit immédiatement.

  • everysec : Écrit les opérations de modification dans le fichier une fois toutes les 1 seconde, valeur par défaut.

  • non : Selon le système, le fichier sera écrit une fois le tampon plein.

⑷Réécriture des fichiers AOP

Afin d'éviter que le fichier AOP ne soit trop volumineux, vous pouvez réécrire l'AOP Le fichier et l'ajout de plusieurs fichiers AOP sont fusionnés en une seule opération.
Méthode de réécriture :
La première méthode, BGREWRITEAOP : est utilisée pour envoyer cette opération et réécrire le fichier AOP.
La deuxième méthode consiste à définir les conditions de configuration et à réécrire automatiquement lorsque les conditions sont remplies. Voici les conditions de réécriture :

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
.

Réécrivez lorsque la taille du fichier AOP atteint une certaine valeur.

Dix clusters

1. Un service Redis peut avoir plusieurs répliques du service Ce service Redis est appelé service maître, et autres. répliques Le produit est appelé service esclave.

2. Le service maître synchronisera ses données avec le service esclave.

3. Le service maître peut à la fois lire et écrire, et le service esclave ne peut que lire.

4. Il existe deux façons de définir un service comme service esclave :

  • Le client émet slaveof masterip port principal .

  • Configurer dans le fichier de configuration : slaveof masterip masterport.

5. Vous pouvez annuler le paramètre esclave dans le fichier de configuration, ou vous pouvez l'annuler par le client : esclave de personne

6. Problèmes de réplication maître-esclave
Un seul serveur maître effectue les opérations d'écriture. Si le serveur maître échoue, l'opération d'écriture ne peut pas être effectuée.

Onze mécanismes sentinelles sentinelles

1. Qu'est-ce que le mécanisme sentinelle ?

Configurez un écouteur pour le serveur maître. Cet écouteur est appelé sentinelle Lorsque le serveur maître tombe en panne, la sentinelle promeut automatiquement un serveur esclave vers le serveur maître. . , assurant ainsi une exécution ininterrompue du serveur.

Douze clusters Twemproxy

1. Dans la réplication maître-esclave, la tâche d'écriture est toujours entreprise par un nœud et la pression d'écriture est pas résolu. Par conséquent, le mécanisme de cluster Twemproxy est né. Les utilisateurs envoient des requêtes au proxy, et le proxy alloue des tâches d'écriture aux nœuds du pool de serveurs.

2. Principes de base de Twenproxy

Chaque serveur du pool de serveurs a un intervalle de réception après que le client envoie une requête au proxy. , le proxy Obtenez le hashcode de la clé et quel serveur la valeur se situe dans l'intervalle sera appelé.

3. Inconvénients

Il y a un objet central, le proxy S'il y a un problème avec le proxy, l'ensemble du service Redis ne peut pas. être utilisé. La solution est que la décentralisation permet à une certaine partie de d'échouer, mais l'ensemble peut toujours fonctionner.

Treize mode cluster natif

1. Qu'est-ce que le mode cluster natif ?

Plusieurs serveurs maîtres Redis forment un cluster. Chaque serveur maître Redis est appelé un nœud. Les nœuds communiquent entre eux. Les nœuds peuvent avoir leurs propres esclaves. serveur pour partager la pression de lecture.

2. L'un des objectifs de la communication entre les nœuds

Chaque nœud peut communiquer avec tous les autres nœuds et agir comme un rôle de sentinelle pour surveiller autres nœuds. L'état de fonctionnement du nœud. Lorsqu'un nœud tombe en panne Informations complètes provenant de plusieurs autres nœuds. S'il est jugé que le nœud ne fonctionne pas correctement, promouvez un serveur esclave du nœud vers le nœud.

Quatorze Jedis

1. Pour accéder au serveur Redis en Java, vous devez importer le package d'étagère jedis.jar.

2. Jedis est un outil client en langage java qui se connecte au serveur Redis.

3. Jedis conserve essentiellement la méthode de ligne de commande pour accéder au serveur Redis.

4. Tout comme il est préférable d'établir un pool de connexions pour se connecter à une base de données relationnelle, il est également préférable d'établir un pool de connexions pour se connecter à la base de données Rdis. lors de l'établissement d'un pool de connexions JedisPoolConfig/JedisPool.

5. Un seul serveur Redis est soumis à une forte pression, donc un cluster de serveurs Redis peut être construit et la classe HostAndPort/JedisCluster utilisée pour construire le cluster est utilisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn