ホームページ  >  記事  >  データベース  >  Redis の 3 つの特殊なデータ型の詳細な分析

Redis の 3 つの特殊なデータ型の詳細な分析

青灯夜游
青灯夜游転載
2021-08-24 10:57:102273ブラウズ

この記事では、redis の 3 つの特殊なデータ型について説明します。興味のある友人はそれについて学ぶことができます~

Redis の 3 つの特殊なデータ型の詳細な分析

redis の 3 つの特殊なデータ型

  • #地理空間 地理的位置

  • ハイパーログログ カーディナリティ統計

  • ビットマップ ビットピクチャ シーン

[関連する推奨事項:

Redis ビデオ チュートリアル ]

地理空間 地理的位置

redis バージョン 3.2 がリリースされました 地理空間

公式ドキュメントで使用方法の詳細を確認できます:

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

Redis の 3 つの特殊なデータ型の詳細な分析

地理空間は次のシナリオで使用できます:

    近くにいる人
  • タクシーに乗って距離を計算する
  • 友人の位置情報
  • 測位に関連する一連のシナリオを待っています
  • ##Geospatial には 6 つのコマンドしかありません

    GEOADD
  • ジオディスト
  • GEOHASH
  • GEOPOS
  • GEORADIUS
  • GEORADIUSBYMEMBER
  • ##GEOADD

地理位置情報を追加

有効な経度の範囲は -180 度から 180 度です。

    有効な緯度の範囲は、-85.05112878 度から 85.05112878 度までです。
  • 座標位置が上記の範囲を超えた場合、本コマンドはエラーを返します。

GEOADD キー [NX|XX] [CH] 経度緯度メンバー [経度緯度メンバー ...]

  • 緯度と経度、都市名を追加します
  • 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

GEOPOS

GEOPOS キー メンバー [メンバー ...]

  • 指定した都市の緯度経度情報を取得します
  • 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"

GEODIST

GEODIST key member1 member2 [m|km|ft|mi]

  • 次の 4 つのユニットがあります:
m : メートル

km: キロメートル

ft: フィート

mi: マイル

2 つの都市間の距離を取得する

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"

GEOHASH

GEOHASH キー メンバー [メンバー ...]

  • GEOHASH で表される 1 つ以上の要素を返します。11 文字を返します。 Geohash 文字列
  • 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"
GEORADIUS

GEORADIUS キー経度緯度半径 m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC |DESC ] [STORE キー] [STOR

  • 原点として経度と緯度を指定し、半径を指定して、指定した範囲内の都市をクエリします。これらの都市はすべて独自のコレクションに含まれています
  • 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
GEORADIUSBYMEMBER

GEORADIUSBYMEMBER キー メンバー半径 m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE キー] [STOREDIST key]

  • 指定された要素の周囲にある都市を検索します
  • 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"

地理空間の基礎となる原理は、Zset 順序付きコレクションを使用して実装されています

。 Zset 順序付けコレクション Geo を操作するには、Zset コマンドを使用して wave を体験します

127.0.0.1:6379> ZRANGE city 0 -1
1) "chongqing"
2) "chengdu"
3) "shenzhen"
4) "changsha"
5) "shanghai"
6) "nanjing"
7) "tianjin"
127.0.0.1:6379> ZCARD city
(integer) 7
Hyperloglog Cardinality Statistics

Cardinality とは何ですか?

基数は繰り返しのない数値です。例:

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

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

A と B の和集合の基底は 6

はじめに

Hyperloglog は redis です2.8.9 この種のデータ構造はバージョンの最初で利用可能です #redis ハイパーログログ カーディナリティ統計もアルゴリズムです

#たとえば、次のようなアプリケーション シナリオがあります:

Web ページへの訪問者数統計によると、同じユーザーが Web サイトに複数回アクセスした場合、1 としてのみカウントされます

従来の方法では、次のセットを使用します。 IDを保存し、セット内のIDの数を数えて人数を計算します
  • この方法でも問題ありませんが、データ量が多いと非常に面倒です。 ID を取得するのは役に立ちません。数えるだけで十分です。

    利点

## Hyperloglog は固定メモリ領域 2^ を占有します。 16 の消費電力で、必要なメモリは 12 KB だけです。メモリの観点から見ると、Hyperloglog がテクノロジ選択の最初の選択肢です。

PFADD キー要素 [要素 ...]Redis の 3 つの特殊なデータ型の詳細な分析

1 つ以上の要素を 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 两种状态

Redis の 3 つの特殊なデータ型の詳細な分析

例如我们举个例子,来记录着一周每天的心情,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

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

以上がRedis の 3 つの特殊なデータ型の詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。