Maison  >  Article  >  base de données  >  Une analyse approfondie des trois types de données spéciaux dans Redis

Une analyse approfondie des trois types de données spéciaux dans Redis

青灯夜游
青灯夜游avant
2021-08-24 10:57:102273parcourir

Cet article vous présentera les trois types de données spéciaux dans Redis. Les amis intéressés peuvent en apprendre davantage ~

Une analyse approfondie des trois types de données spéciaux dans Redis

redis trois types de données spéciaux

  • Localisation géographique géospatiale

  • Statistiques de cardinalité Hyperloglog

  • .
  • Scène bitmap Bitmap

[Recommandations associées : Tutoriel vidéo Redis]

Géospatial Localisation géographique

Redis 3.2 version Geospatial

Les détails peuvent être trouvés dans la documentation officielle Voir utilisation

https : //www.redis.net.cn/order/3685.html

Une analyse approfondie des trois types de données spéciaux dans Redis

La géospatiale peut être utilisée dans les scénarios suivants :

  • Personnes à proximité
  • Prendre un taxi pour calculer la distance
  • Positionnement d'un ami
  • Et un série de scénarios liés au positionnement

Geospatial n'a que six commandes

GEOADD

Ajouter la géolocalisation

  • Les longitudes valides vont de -180 degrés à 180 degrés.
  • Les latitudes valides vont de -85,05112878 degrés à 85,05112878 degrés.

Lorsque la position des coordonnées dépasse la plage spécifiée ci-dessus, cette commande renvoie une erreur.

  • Clé GEOADD [NX |

Obtenir les informations de latitude et de longitude de la ville spécifiée

127.0.0.1:6379> GEOADD city 113.087559 28.251818 changsha
(integer) 1
127.0.0.1:6379> GEOADD city 114.064552 22.548457 shenzhen
(integer) 1
127.0.0.1:6379> GEOADD city 104.087045 30.666416 chengdu
(integer) 1
127.0.0.1:6379> GEOADD city 118.802422 32.064653 nanjing
(integer) 1
127.0.0.1:6379> GEOADD city 106.558434 29.568996 chongqing
(integer) 1
127.0.0.1:6379> GEOADD city 121.463615 31.195908 shanghai
(integer) 1
127.0.0.1:6379> GEOADD city 117.208093 39.091103 tianjin
(integer) 1

GEODIST

  • Clé GEODIST membre1 membre2 [m|km|ft|mi]

Il y a les éléments suivants 4 unités :

m : mètrekm : kilomètre

    ft : pieds
  • mi : miles

Obtenez la distance entre deux villes

127.0.0.1:6379> GEOPOS city changsha
1) 1) "113.08755666017532349"
   2) "28.25181827470789386"
127.0.0.1:6379> GEOPOS city tianjin
1) 1) "117.20809489488601685"
   2) "39.0911021322545551"

GEOHASH

Membre clé GEOHASH [membre ...]

Renvoie un ou plusieurs éléments de représentation GEOHASH, renvoie 11 caractères Chaîne Geohash

127.0.0.1:6379> GEODIST city changsha tianjin
"1264101.6876"
127.0.0.1:6379> GEODIST city changsha tianjin km
"1264.1017"
127.0.0.1:6379> GEODIST city changsha shenzhen km
"641.9034"

GEORADIUS

Clé GEORADIUS longitude latitude rayon m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [Store key] [STOR
  • Spécifiez la longitude et la latitude comme origine, spécifiez le rayon et interrogez les villes dans la plage spécifiée. Ces villes sont toutes dans notre propre collection
127.0.0.1:6379> GEOHASH city changsha
1) "wt02tr5fg00"
127.0.0.1:6379> GEOHASH city changsha beijing
1) "wt02tr5fg00"
2) (nil)
127.0.0.1:6379> GEOHASH city changsha beijing tianjin chongqing
1) "wt02tr5fg00"
2) (nil)
3) "wwgq7hk64t0"
4) "wm7b0yc7zk0"

GEORADIUSBYMEMBER

.

GEORADIUSBYMEMBER rayon du membre clé m|km|ft |mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]
  • Trouver les villes situées autour du élément spécifié
127.0.0.1:6379> GEORADIUS city 110 30 500 m
(empty array)
127.0.0.1:6379> GEORADIUS city 110 30 500 km
1) "chongqing"
2) "changsha"
127.0.0.1:6379> GEORADIUS city 110 30 1000 km
1) "chongqing"
2) "chengdu"
3) "shenzhen"
4) "changsha"
5) "nanjing"
127.0.0.1:6379> GEORADIUS city 110 30 700 km withcoord
1) 1) "chongqing"
   2) 1) "106.55843228101730347"
      2) "29.56899626404301529"
2) 1) "chengdu"
   2) 1) "104.08704489469528198"
      2) "30.6664164635846177"
3) 1) "changsha"
   2) 1) "113.08755666017532349"
      2) "28.25181827470789386"
127.0.0.1:6379> GEORADIUS city 110 30 700 km withdist
1) 1) "chongqing"
   2) "335.6530"
2) 1) "chengdu"
   2) "572.3911"
3) 1) "changsha"
   2) "357.4711"
127.0.0.1:6379> GEORADIUS city 110 30 700 km withhash
1) 1) "chongqing"
   2) (integer) 4026059435699931
2) 1) "chengdu"
   2) (integer) 4026137831798506
3) 1) "changsha"
   2) (integer) 4050903792284309

Le principe sous-jacent du géospatial Il est implémenté à l'aide de l'ensemble ordonné Zset

Nous pouvons utiliser la commande d'ensemble ordonné Zset pour faire fonctionner Geo. Nous utilisons la commande Zset pour expérimenter une vague de

127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 1000 km
1) "nanjing"
2) "tianjin"
3) "shanghai"
127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 500 km
1) "tianjin"
127.0.0.1:6379> GEORADIUSBYMEMBER city tianjin 5000 km
1) "chongqing"
2) "chengdu"
3) "shenzhen"
4) "changsha"
5) "shanghai"
6) "nanjing"
7) "tianjin"
    Statistiques de cardinalité Hyperloglog
  • .
Quelle est la cardinalité ?

Un nombre de base est un nombre non répétitif, par exemple : A = {1,2,3,4,5}

B = {2,3,4,5,6}

Puis A et B La cardinalité de l'union est 6

Introduction

Hyperloglog est une structure de données disponible depuis la version 2.8.9 de Redis

Les statistiques de cardinalité de l'hyperloglog redis sont également un algorithme

Par exemple, il existe un tel scénario d'application :

Statistiques des visiteurs de la page Web, si le même utilisateur visite le site Web plusieurs fois, cela n'est compté que pour 1

La méthode traditionnelle consiste à utiliser une collection définie pour enregistrer l'identifiant et compter le nombre d'identifiants dans l'ensemble pour calculer le nombre de personnes

Cette méthode Il n'y a pas de problème, mais si la quantité de données est importante, ce sera très gênant, car il nous est inutile d'obtenir l'identifiant, il suffit de compter

    Avantages
  • L'espace mémoire occupé par Hyperloglog est fixe, 2 ^ 16 puissance, n'a besoin que de 12 Ko de mémoire, Hyperloglog est le premier choix pour la sélection de la technologie

  • Clé PFADD. element [element...]

Ajoutez un ou plusieurs à l'élément Hyperloglog

  • PFMERGE destkey sourcekey [sourcekey ...]

将多个 Hyperloglog  取并集,得到一个结果 Hyperloglog ,里面的数据是不会重复的

127.0.0.1:6379> PFADD myhash  1 2 3 4 5 6 7 8
(integer) 1
127.0.0.1:6379> pfadd myhash2 3 4 5 6 7 8 9 0 88 99
(integer) 1
127.0.0.1:6379> PFMERGE res myhash myhash2
OK
127.0.0.1:6379> PFCOUNT res
(integer) 12
127.0.0.1:6379> PFCOUNT myhash
(integer) 8
127.0.0.1:6379> PFCOUNT myhash2
(integer) 10

Bitmaps 位图场景

Bitmaps 位图,位存储

一般用于,统计用户信息,活跃,不活跃,

登录,不登录

打卡,不打卡 等等,两种状态

Bitmaps 位图,也是一种数据结构,是操作二进制的方式来进行记录的,只有 0  和 1 两种状态

Une analyse approfondie des trois types de données spéciaux dans Redis

例如我们举个例子,来记录着一周每天的心情,1 是开心,0 是沮丧

  • SETBIT key offset value

设置 bit 位的值

  • GETBIT key offset

获取 bit 位的值

127.0.0.1:6379> SETBIT week 0 1
(integer) 0
127.0.0.1:6379> SETBIT week 1  1
(integer) 0
127.0.0.1:6379> SETBIT week 2 1
(integer) 0
127.0.0.1:6379> SETBIT week 3 0
(integer) 0
127.0.0.1:6379> SETBIT week 4 0
(integer) 0
127.0.0.1:6379> SETBIT week 5 1
(integer) 0
127.0.0.1:6379> SETBIT week 6 1
(integer) 0
127.0.0.1:6379> GETBIT week 6
(integer) 1
127.0.0.1:6379> GETBIT week 5
(integer) 1

更多编程相关知识,请访问:编程视频!!

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