3日目、ルームメイトがLOLライブ放送を視聴し、Redisの特別なデータ型を終了しました

こんにちは、フェイ・ニャオです。記事がうまく書かれていない場合はご容赦ください。引き続き学習と要約を行います。編集者のようにサポートしていただける場合は、注意を払ってください。ありがとうございます。

おすすめの読み物
Day1、私の妹はRedisの入門知識を学ぶためにQQスピードをプレイしました

2日目、ルームメイトがキングタイムをプレイし、Redisの入門ガイドを学びました

Redisの3つの特別なデータタイプ(ジオロケーション、カーディナリティ統計、ビットマップシーンの使用)

サーバーを起動します

redis-server.exe redis.windows.conf

クライアントを起動します

redis-cli.exe -h 127.0.0.1 -p 6379

ここに画像の説明を挿入

1.Gaospatialの地理的位置


友人の場所、近くの人、タクシーの距離を計算するにはどうすればよいですか?

Redis GEOは、主に地理的位置情報の保存と保存された情報の操作に使用されます。この機能は、Redis3.2バージョンで追加されました。

場所の緯度と経度のテストデータをクエリできます:http ://www.jsons.cn/lngcode/

ここに画像の説明を挿入

GEOADDは、指定された地理空間位置(経度、緯度、名前)を指定されたキーに追加します

GEOADDキー経度緯度メンバー[経度緯度メンバー…]

  • 経度経度

  • 緯度

  • メンバー名

深セン、北京、上海の緯度と経度を照会する

#规则:两级无法直接添加,我们一般会下载城市数据,直接通过Java程序一次性导入!
127.0.0.1:6379>GEOADD china:city 114.08 22.54 shenzhen
(integer) 1
127.0.0.1:6379> GEOADD china:city 116.40 39.90 beijing
(integer) 1
127.0.0.1:6379> GEOADD china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> GEOADD china:city 120.15 30.28 hangzhou 113.28 23.12 guangzhou
(integer) 2

GEOPOSは、指定されたすべての位置要素の位置(緯度と経度)をキーから返します

  • GEOPOSキーメンバー[メンバー…]

現在地を取得!

127.0.0.1:6379> GEOPOS china:city beijing
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> GEOPOS china:city shanghai
1) 1) "121.47000163793563843"
   2) "31.22999903975783553"

GEODISTは、2つの修正間の距離を返します

GEODISTキーメンバー1メンバー2[ユニット]

  • mは、単位がメートルであることを示します。
  • kmは、単位がキロメートルであることを意味します。
  • miは、単位がマイルであることを意味します。
  • ftは、単位がフィートであることを意味します

北京と広州の間の距離!

127.0.0.1:6379> GEODIST  china:city beijing guangzhou
"1889326.0478"

GEORADIUSは緯度と経度を中心として、特定の半径内の要素を検索します

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

近くの人?(近くの人全員の住所と位置を取得)、半径、北京の緯度と経度116,39を中心、半径1000 kmでクエリを実行し、1000以内の北京と上海の場所を見つけます

127.0.0.1:6379> GEORADIUS china:city 116 39 1000 km
1) "beijing"
2) "shanghai"

127.0.0.1:6379> GEORADIUS china:city 116 39 1000 km WITHDIST# 显示到中心距离的位置
1) 1) "beijing"
   2) "105.8343"
2) 1) "shanghai"
   2) "996.7785"
   
127.0.0.1:6379> GEORADIUS china:city 116 39 1000 km withcoord  #显示他人的定位信息
1) 1) "beijing"
   2) 1) "116.39999896287918091"
      2) "39.90000009167092543"
2) 1) "shanghai"
   2) 1) "121.47000163793563843"
      2) "31.22999903975783553"

GEORADIUSBYMEMBERは指定された範囲内の要素を検出し、中心点は指定された位置要素によって決定されます

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

上海を中心に半径500kmで、範囲内の要素を指摘します

127.0.0.1:6379> GEORADIUSBYMEMBER china:city shanghai 500 km
1) "hangzhou"
2) "shanghai"

GEOHASHは、1つ以上の位置要素のジオハッシュ表現を返します

このコマンドは、11文字のジオハッシュ文字列を返します

2次元の緯度と経度を1次元の文字列に変換します。2つの文字列が近い場合、距離は近くなります。

127.0.0.1:6379> geohash china:city shanghai hangzhou
1) "wtw3sj5zbj0"
2) "wtmkq069cc0"

geoの低レベルの実装原則はZsetです。Zsetコマンドを使用してgeoを使用できます。

127.0.0.1:6379> ZRANGE china:city 0 -1 #查看地图中全部元素
1) "shenzhen"
2) "guangzhou"
3) "hangzhou"
4) "shanghai"
5) "beijing"
127.0.0.1:6379> zrem china:city beijing  #移除指定元素
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "shenzhen"
2) "guangzhou"
3) "hangzhou"
4) "shanghai"

RedisGEO操作の概要は次のとおりです。

  • geoadd:地理的位置の座標を追加します。
  • geopos:地理的位置の座標を取得します。
  • geodist:2つの場所の間の距離を計算します。
  • georadius:ユーザーが指定した緯度と経度の座標に基づいて、指定された範囲内の地理的位置のコレクションを取得します。
  • georadiusbymember:ロケーションセットに保存されているロケーションに基づいて、指定された範囲内に設定された地理的ロケーションを取得します。
  • geohash:1つ以上のロケーションオブジェクトのジオハッシュ値を返します。

2.HyperLogLogカーディナリティ統計


Redis HyperLogLogは、カーディナリティ統計のアルゴリズムです

利点:入力要素の数または量が非常に多い場合、カーディナリティの計算に必要なスペースは常に固定され、小さくなります。2 ^ 64の異なる要素テクノロジー、12kbのメモリのみが必要

ベースは何ですか?

たとえば、データセット{1、3、5、7、5、7、8}の場合、このデータセットのカーディナリティセットは{1、3、5、7、8}であり、カーディナリティ(非反復要素) )は5です。カーディナリティ推定は、許容可能なエラー範囲内でカーディナリティをすばやく計算することです。

127.0.0.1:6379> PFADD feiniao a b c d e #创建第一组元素feiniao
(integer) 1
127.0.0.1:6379> PFCOUNT feiniao #统计基数数量
(integer) 5
127.0.0.1:6379> PFADD feiniao1 c d f g h #创建第一组元素feiniao
(integer) 1
127.0.0.1:6379> PFCOUNT feiniao1 ##统计基数数量
(integer) 5
127.0.0.1:6379> PFMERGE feiniao2 feiniao feiniao1 #合并两组,并集
OK
127.0.0.1:6379> PFCOUNT feiniao2 # 查看基数数量
(integer) 8

3.ビットマップビットマップシーン


ビットストレージ

01で表される統計的なユーザー情報。たとえば、1はパンチイン、0はパンチインしない、1はブロガーをフォローする、0はフォローしない、ビットマップを使用できます。

月曜日から日曜日までパンチカードを記録するためにビットマップを使用する

月曜日:0火曜日:1水曜日:0…

127.0.0.1:6379> setbit sign 1 0
(integer) 0
127.0.0.1:6379> setbit sign 2 1
(integer) 0
127.0.0.1:6379> setbit sign 3 0
(integer) 0
127.0.0.1:6379> setbit sign 4 1
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0

特定の日にカードを持っているかどうかを確認します

127.0.0.1:6379> getbit sign 3
(integer) 0
127.0.0.1:6379> getbit sign 2
(integer) 1

統計パンチ日

127.0.0.1:6379> bitcount sign
(integer) 2

ドキュメント:公式の中国語ドキュメント、Mad God Up Master、Rookie
ここに画像の説明を挿入
Tutorials

おすすめ

転載: blog.csdn.net/A6_107/article/details/123194230