Maison  >  Article  >  base de données  >  Comment supprimer les doublons dans Redis ? Une brève analyse de 4 méthodes pour supprimer les doublons

Comment supprimer les doublons dans Redis ? Une brève analyse de 4 méthodes pour supprimer les doublons

青灯夜游
青灯夜游avant
2021-11-09 10:03:467888parcourir

Comment supprimer les doublons dans Redis ? L'article suivant vous présentera 4 méthodes de déduplication Redis. J'espère qu'il vous sera utile !

Comment supprimer les doublons dans Redis ? Une brève analyse de 4 méthodes pour supprimer les doublons

Cet article présente principalement le partage de trois méthodes de comptage unique dans Redis. Cet article explique les trois méthodes basées sur SET, basées sur bit et basées sur HyperLog. Les amis dans le besoin peuvent s'y référer

. Le comptage unique est le site Web. Une fonctionnalité très courante dans le système, par exemple, un site Web doit compter le nombre de visiteurs uniques (c'est-à-dire UV) qui visitent chaque jour. Les problèmes de comptage sont très courants, mais ils peuvent être très compliqués à résoudre : premièrement, la quantité à compter peut être très importante, par exemple, un grand site est visité par des millions de personnes chaque jour et la quantité de données est assez grand ; deuxièmement, il est généralement souhaitable d'élargir la dimension du comptage. Par exemple, en plus des UV quotidiens, vous souhaitez également connaître les UV hebdomadaires ou mensuels, ce qui rend le calcul très compliqué. [Recommandation associée : Tutoriel vidéo Redis]

Dans un système stocké dans une base de données relationnelle, la méthode pour obtenir un comptage unique est de sélectionner le nombre (distinct ). grand, cette instruction sera exécutée. C'est très lent. Un autre problème lié à l'utilisation de bases de données relationnelles est que les performances d'insertion des données ne sont pas élevées.

Redis peut résoudre facilement ce type de problème de comptage. Il est plus rapide et consomme moins de ressources que les bases de données relationnelles. Il propose même 3 méthodes différentes.

1. Ensemble basé sur l'ensemble

Redis est utilisé pour enregistrer un ensemble de données unique, grâce à lui, vous pouvez déterminer rapidement si un élément existe dans l'ensemble, et vous pouvez également calculer rapidement le nombre d'éléments dans un ensemble. De plus, vous pouvez fusionner des collections dans une nouvelle collection. Les commandes impliquées sont les suivantes :

Copiez le code comme suit :

SISMEMBER key member  # 判断 member 是否存在
SADD key member  # 往集合中加入 member
SCARD key   # 获取集合元素个数

La méthode basée sur les ensembles est simple et efficace, précise dans le comptage, largement applicable et facile à comprendre. Son inconvénient est qu'elle consomme beaucoup de ressources. (bien sûr, c'est bien inférieur à celui d'une base de données relationnelle) ), si le nombre d'éléments est grand (comme des centaines de millions), la consommation de mémoire est terrible.

2. Bit basé sur bit

Redis peut être utilisé pour implémenter un comptage plus compressé que la mémoire définie. Il utilise un bit 1 ou 0 pour stocker des informations indiquant si un élément existe. Par exemple, pour compter les visiteurs uniques d'un site Web, user_id peut être utilisé comme décalage du bit. S'il est défini sur 1, cela signifie qu'il y a un accès. En utilisant 1 Mo d'espace, vous pouvez stocker le nombre d'accès d'une journée. de plus de 8 millions d'utilisateurs. Les commandes impliquées sont les suivantes : Copiez le code comme suit :

SETBIT key offset value  # 设置位信息
GETBIT key offset        # 获取位信息
BITCOUNT key [start end] # 计数
BITOP operation destkey key [key ...]  # 位图合并

La méthode basée sur les bits consomme beaucoup moins d'espace que la méthode set, mais elle nécessite que les éléments puissent être simplement mappés sur des décalages de bits, et la portée applicable est beaucoup plus étroite. sa consommation dépend du décalage maximum. La quantité de décalage n'a rien à voir avec la valeur de comptage. Si le décalage maximum est important, la consommation de mémoire sera considérable.

3. Il est difficile d'obtenir un comptage unique et précis de quantités extrêmement importantes de données basé sur HyperLogLog

, mais si ce n'est qu'approximatif, il existe de nombreux algorithmes efficaces en informatique, parmi lesquels HyperLogLog Counting est un très célèbre Il est possible d'obtenir des centaines de millions de comptes uniques en utilisant seulement environ 12 Ko de mémoire, et l'erreur est contrôlée à environ 1 pour cent. Les commandes impliquées sont les suivantes : Copiez le code comme suit :

PFADD key element [element ...]  # 加入元素
PFCOUNT key [key ...]   # 计数

Cette méthode de comptage est vraiment étonnante. Elle implique une distribution uniforme, une probabilité aléatoire, une distribution de Bernoulli, etc. dans les statistiques. Je ne l'ai pas complètement comprise. Si vous êtes intéressé, vous pouvez l'étudier dans. profondeur.

Les trois méthodes de comptage uniques fournies par redis ont chacune leurs propres avantages et inconvénients et peuvent pleinement répondre aux exigences de comptage dans différentes situations.

4. Basé sur bloomfilter

BloomFilter utilise des structures de données similaires aux bitmaps ou aux jeux de bits pour stocker des données, utilise des tableaux de bits pour représenter de manière concise un ensemble et peut déterminer rapidement si un élément existe déjà dans cet ensemble. Bien que BloomFilter ne soit pas précis à 100 %, le taux d'erreur peut être réduit en ajustant les paramètres, le nombre de fonctions de hachage utilisées et la taille du tableau de bits. Cet ajustement peut réduire complètement le taux d’erreur à un niveau proche de 0. Il peut répondre à la plupart des scénarios.

S'il existe un ensemble S = {x1, x2,… xn}, Bloom Filter utilise k fonctions de hachage indépendantes pour mapper chaque élément de l'ensemble à la plage de {1,…,m}. Pour tout élément, le numéro mappé est utilisé comme index du tableau de bits correspondant et le bit sera défini sur 1. Par exemple, l'élément x1 est mappé au nombre 8 par la fonction de hachage, puis le 8ème bit du tableau de bits sera mis à 1. Dans la figure ci-dessous, l'ensemble S n'a que deux éléments x et y, qui sont respectivement mappés par trois fonctions de hachage. Les positions mappées sont respectivement (0, 3, 6) et (4, 7, 10), et les bits correspondants. sera défini. est 1 :

Comment supprimer les doublons dans Redis ? Une brève analyse de 4 méthodes pour supprimer les doublons

Maintenant, si vous souhaitez déterminer si un autre élément est dans cet ensemble, il vous suffit d'être mappé par ces trois fonctions de hachage pour voir s'il y a un 0 dans la position correspondante. donc, cela signifie que cet élément n'existe certainement pas dans cet ensemble, sinon il pourrait exister.

Redis doit installer le plug-in pour utiliser le filtre Bloom : https://blog.csdn.net/u013030276/article/details/88350641.

Pour plus de connaissances sur la programmation, veuillez visiter : Introduction à la programmation ! !

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer