Heim  >  Artikel  >  Datenbank  >  Eine eingehende Analyse der drei speziellen Datentypen in Redis

Eine eingehende Analyse der drei speziellen Datentypen in Redis

青灯夜游
青灯夜游nach vorne
2021-08-24 10:57:102281Durchsuche

Dieser Artikel führt Sie durch die drei speziellen Datentypen in Redis. Interessierte Freunde können mehr darüber erfahren „Bitmap-Bitmap-Szene“ : //www.redis.net.cn/order/3685.html

Eine eingehende Analyse der drei speziellen Datentypen in Redis

Geospatial kann in den folgenden Szenarien verwendet werden:

Menschen in der Nähe
  • Nehmen Sie ein Taxi, um die Entfernung zu berechnen

    Positionierung von Freunden
  • Und a Reihe von Positionierungsszenarien

  • Geospatial hat nur sechs Befehle
  • GEOADD

GEODIST

GEOHASH

GEOPOS

.

GE ORADIUSEine eingehende Analyse der drei speziellen Datentypen in Redis

GEORADIUSBYMEMBER
  • GEOADD
  • Geolokalisierung hinzufügen

Gültige Längengrade liegen zwischen -180 Grad und 180 Grad.

ft: Fuß

mi: Meilen

Ermitteln Sie die Entfernung zwischen zwei Städten

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
  • GEOHASH-Schlüsselmitglied [Mitglied ...]

Gibt ein oder mehrere GEOHASH-Darstellungselemente zurück, gibt eine 11-stellige Geohash-Zeichenfolge zurück
    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

GEORADIUS-Schlüssel Längengrad Breitengrad Radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE-Taste] [STOR

Geben Sie den Längen- und Breitengrad als Ursprung an, geben Sie den Radius an und fragen Sie die Städte innerhalb des angegebenen Bereichs ab. Diese Städte befinden sich alle in unserer eigenen Sammlung
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 Schlüsselelementradius m|km|ft |mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE-Taste] [STOREDIST-Taste]

Finden Sie die Städte in der Umgebung spezifiziertes Element

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
Das zugrunde liegende Prinzip von Geospatial Es wird mit dem Zset-Ordered-Set-Befehl implementiert. Wir können den Zset-Befehl verwenden, um eine Welle von

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"
    Hyperloglog-Kardinalitätsstatistiken zu erleben
  • Was ist die Kardinalität?

Eine Basiszahl ist eine sich nicht wiederholende Zahl, zum Beispiel:

A = {1,2,3,4,5}

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

Dann A und B Die Kardinalität der Union ist 6

Einführung

Hyperloglog ist eine Datenstruktur, die seit Redis-Version 2.8.9 verfügbar ist Anwendungsszenario:

    Webseitenbesucherstatistik: Wenn derselbe Benutzer die Website mehrmals besucht, wird sie nur als 1 gezählt
  • Die herkömmliche Methode besteht darin, eine festgelegte Sammlung zum Speichern der ID zu verwenden und die Anzahl der IDs zu zählen im Satz, um die Anzahl der Personen zu berechnen

Diese Methode Es gibt kein Problem, aber wenn die Datenmenge groß ist, wird es sehr mühsam, da es für uns nutzlos ist, die ID zu erhalten, wir müssen nur zählen

    Vorteile

Der von Hyperloglog belegte Speicherplatz beträgt 2^16 und benötigt nur 12 KB Speicher. Hyperloglog ist die erste Wahl für die Technologieauswahl Element [Element...]

    Fügen Sie ein oder mehrere zum Hyperloglog-Element hinzu
    • 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 两种状态

    Eine eingehende Analyse der drei speziellen Datentypen in 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

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

Das obige ist der detaillierte Inhalt vonEine eingehende Analyse der drei speziellen Datentypen in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen