A. Redis
Redis est une source ouverte (licence BSD), la structure de données stockée dans le système de mémoire qui peut être utilisée comme une base de données, la mémoire cache et middleware de messagerie .
Adresse officielle chinoise: http://www.redis.cn/
Redis supporte cinq types de données: chaîne (chaîne), hachage (hash), la liste (liste), set (collection) et Zset (ensemble trié: une collection ordonnée)
Chaîne (String)
chaîne est Redis type le plus basique, vous pouvez être compris comme Memcached de type exactement la même chose, une clé correspondant à une valeur .
chaîne de type binaire est sûre. Signification Redis de chaîne peut contenir des données. Tels que jpg images ou objet sérialisé.
chaîne type est Redis types de données de base, chaîne types peuvent stocker la valeur maximale de 512Mo .
Hash (hachage)
Redis hachage est une clé (clé => valeur) paires.
Redis hachage est une chaîne de type champ et la valeur de la table de mappage, le hachage est particulièrement adapté pour stocker des objets.
Liste (liste)
Redis liste est une simple liste de chaînes, l' ordre d'insertion de tri. Vous pouvez ajouter un élément à la tête de la liste (à gauche) ou queue (à droite)
Le SET (collection)
Redis de Set est chaîne type de collection non ordonnée.
La collecte est réalisée par une table de hachage, il faut donc ajouter, supprimer, la complexité de la recherche est O (1) .
sadd commande
Ajouter une chaîne élément à une touche correspondant à l' ensemble collection, retour réussi 1 si l'élément a été retourné dans la collection 0
Zset (triés SET : collection ordonnée )
Redis Zset et définir les mêmes aussi chaîne types d'éléments de collecte , et ne permet pas les membres en double.
La différence est associée à chaque élément sera un double - type de score. Redis il est de petite à grande pour la collecte des points de passage membre.
Zset membre est seulement , mais le score (score) mais peut être répété
II. stockage Redis
Redis propose deux méthodes de stockage: RDB et AOF du
RDB est de données d'écriture dans un fichier temporaire, après la persistance, remplacer le fichier précédent avec le fichier temporaire, pour obtenir la récupération de données
AOF instruction est exécutée à enregistrer, afin de restaurer les données d'avant en arrière et passer ensuite les instructions qui exécutent la récupération de données.
le stockage RDB est le stockage par défaut, un petit nombre, ne se soucient pas de savoir s'il y a la concurrence, les données sont pas perdues, la meilleure sécurité, un minimum d' espace occupé. AOF de manière distribuée, peut faire face à un grand nombre de problèmes de traitement des données, mais il y aura encore la perte de données
III. Redis stratégie d'élimination de cache
( 1 ) -volatile LRU : le délai d'expiration de consigne de la phase de sélection du jeu de données sur les données le moins récemment utilisé.
( 2 ) -ttl volatile : à partir d' un temps d'expiration de consigne de la sélection de l'ensemble de données d'expirer données éliminés.
( 3. ) Random- volatile : régler l'heure d'expiration à partir des données établies de façon arbitraire les données sélectionnées.
( 4 ) volatile-LFU : choisir un temps d'expiration de l' ensemble de l'ensemble de données à utiliser les données de fréquence la plus basse éliminée.
( 5 ) AllKeys la LRU- : les données de la phase de sélection d'ensemble de données le moins récemment utilisées
( 6 ) AllKeys-LFU : choisir à partir du jeu de données à utiliser les données de fréquence les plus bas éliminés.
( . 7 ) AllKeys-aléatoire : A partir de l'ensemble de données ( server.db [I] .dict données Sélection) tout
( 8 ) NO-enviction (expulsion): interdit les données d'expulsion, ce qui est la règle par défaut. Lorsque les moyens de mémoire est insuffisante pour accueillir les nouvelles données, la nouvelle opération d'écriture sera donnée, la demande peut procéder tâche de ligne ne peut pas être poursuivi, en utilisant la non-enviction politique peut faire en sorte que les données ne sont pas perdues.
Ces huit peuvent être divisés en 4 dans, la LRU , LFU , au hasard , ttl
mécanisme de suppression progressive
( 1 ) Méthode passive ( Voie passive ), lorsque la clé principale est accessible si on constate qu'il a échoué, puis supprimez - le. Redis dans la réalisation de GET , MGET , hget , lrange quand il vient à toutes les commandes telles que les données lues appelleront expireIfNeeded , ce qui signifie qu'il existe avant la lecture des données pour vérifier qu'il n'a pas échoué, si elle ne parvient pas à le supprimer.
expireIfNeeded une autre fonction de fonction d' appel propagateExpire , cette fonction est utilisée dans la suppression officielle clé primaire invalide, et dire le reste de l'émission, il y a deux destinations: AOF de fichiers, cette opération supprimera l' échec de la clé primaire à DEL Touche d' enregistrement de format de commande standard vers le bas, l'autre est envoyé au courant Redis tous les serveurs esclaves , le même échec supprimera la clé primaire de cette opération DEL clé format de commande standard pour informer l' esclave supprimer la clé primaire de chaque échec.
( 2 ) Méthode positive ( la voie active) Périodiquement pour détecter, trouver l'échec de la suppression. Inconvénient de l' approche négative est que si la clé retard est accessible, il faudra beaucoup d'espace mémoire, de sorte que d'une manière positive.
( 3 ) prendre l'initiative de supprimer: Lorsque la mémoire de plus de MaxMemory limite de temps, ce qui déclenche l'initiative de nettoyer la politique, qui est déterminée par les paramètres de la configuration
La quantité de données sur
Comme il est hors de données, le nombre approprié hors de lui?
Afin d'éviter la stratégie d'élimination de déclenchement fréquent, chacun éliminer un lot de données, la taille des données sur le fait et de déterminer la taille du remplacement, si le volume de données de remplacement, certainement plus éliminé