Redis05_ 3つの特別なデータ型


1.地理空間の場所

注:GEOの基本的な実装原理はZsetであり、Zsetコマンドを使用してGEOを操作できます

アプリケーションのシナリオ:友人、近くの人の位置、タクシー距離の計算

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

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 106.50 29.53 Chongqin
(integer) 1
127.0.0.1:6379> geoadd china:city 114.08 22.54 Shenzhen
(integer) 1
127.0.0.1:6379> geoadd china:city 120.15 30.28 Hangzhou
(integer) 1
127.0.0.1:6379> geoadd china:city 108.94 34.26 Xian
(integer) 1

Geopos は、指定された場所の経度と緯度を取得します
。Geodist は、2つの場所の間の距離を取得します。デフォルトの単位はメートルです。単位:m、km、mi(マイル)、ft(フィート)
。Georadius は、指定された経度と緯度を中心として、指定された半径内の場所を検索します。パラメータwithcoordパラメータwithdistが位置距離を表し、パラメータ数がクエリ結果の数を表し、場所の緯度と経度を表す。
georadiusbymemberを 中心として指定された場所を取り、指定された半径内の位置を見出す。
ジオハッシュ 変換し、指定された場所の二次元経度と緯度を一次元の文字列に

127.0.0.1:6379> geopos china:city Beijing
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"

127.0.0.1:6379> geopos china:city Beijing Shanghai
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
2) 1) "121.47000163793563843"
   2) "31.22999903975783553"

127.0.0.1:6379> geodist china:city Beijing Shanghai
"1067378.7564"
127.0.0.1:6379> geodist china:city Beijing Shanghai km
"1067.3788"

127.0.0.1:6379> georadius china:city 110.00 30.00 500 km
1) "Chongqin"
2) "Xian"
127.0.0.1:6379> georadius china:city 110.00 30.00 500 km withcoord withdist count 1
1) 1) "Chongqin"
   2) "341.9374"
   3) 1) "106.49999767541885376"
      2) "29.52999957900659211"

127.0.0.1:6379> georadiusbymember china:city Shanghai 400 km
1) "Hangzhou"
2) "Shanghai"

127.0.0.1:6379> geohash china:city Beijing
1) "wx4fbxxfke0"

Zsetコマンドを使用してGEOを操作する

127.0.0.1:6379> zrange china:city 0 -1
1) "Chongqin"
2) "Xian"
3) "Shenzhen"
4) "Hangzhou"
5) "Shanghai"
6) "Beijing"

127.0.0.1:6379> zrem china:city Beijing
(integer) 1

2. Hyperloglogベースの統計

ベースは何ですか?

A {1,3,5,7,8,7}
B {1,3,5,7,8}
カーディナリティ(繰り返し要素1,3,5,7,8ではない)= 5

Hyperloglogは基本統計のアルゴリズムです

アプリケーションシナリオ:Webサイトの
従来のUVの方法(1人がWebサイトに複数回アクセスし、1人として数える)、セット(順序付けされていない、繰り返されないコレクション)はユーザーIDを保存し、セット内の要素の数をカウントし、多数のユーザーを保存しますid、領域
占有するHyperloglogの利点を比較します。占有メモリは固定されており、非常に小さいです
注:Hyperloglogのエラー率は約0.81%です

pfadd は、
pfcount 統計の指定されたHyperloglogデータ構造に要素を追加します。Hyperloglogベースは、pfmergeがHyperloglogをマージすると推定します。

127.0.0.1:6379> pfadd mykey a b c d e f g h i j
(integer) 1
127.0.0.1:6379> pfcount mykey
(integer) 10
127.0.0.1:6379> pfadd mykey2 i j z x c v b n m
(integer) 1
127.0.0.1:6379> pfcount mykey2
(integer) 9
127.0.0.1:6379> pfmerge mykey3 mykey mykey2
OK
127.0.0.1:6379> pfcount mykey3
(integer) 15

3.ビットマップ

アプリケーションのシナリオ:ユーザー情報の統計、ログインステータス、チェックインレコード

バイナリビットを操作して記録する、ゼロ以外または1状態

例:週7日のチェックイン状況を記録します。1はチェックイン、0はチェックインなしを意味します

127.0.0.1:6379> setbit sign 0 1
(integer) 0
127.0.0.1:6379> setbit sign 1 0
(integer) 0
127.0.0.1:6379> setbit sign 2 0
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(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> setbit sign 6 0
(integer) 0

カードが特定の日にクロックされているかどうかを確認します。

127.0.0.1:6379> getbit sign 4
(integer) 1

1週間のチェックイン日数をカウントします。

127.0.0.1:6379> bitcount sign
(integer) 3

おすすめ

転載: blog.csdn.net/BLU_111/article/details/108293010