【redis】3種類の特殊データ型
8809 ワード
3つの特殊なデータ型
geospatial地理的位置
最下位はzsetで実現され、zsetのコマンドで操作できます
geoadd緯度の追加
GEOADD key longitude latitude member [longitude latitude member ...]
geoaddは、指定された地理空間位置を格納するために使用され、指定されたkeyに1つ以上の経度(longitude)、緯度(latitude)、位置名(member)を追加することができる.両極は直接追加できません.一般的には都市データをダウンロードしjavaプログラムで直接インポートします.127.0.0.1:6379> geoadd china:city 16.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 chongqing 114.05 22.52 shenzhen
(integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2
geopos緯度取得
GEOPOS key member [member ...]
geoposは、所与のkeyから指定された名前(member)の位置(経度と緯度)をすべて返し、存在しないnilを返すために使用される.127.0.0.1:6379> geopos china:city beijing #
1) 1) "16.39999955892562866"
2) "39.90000009167092543"
127.0.0.1:6379> geopos china:city chongqing
1) 1) "106.49999767541885376"
2) "29.52999957900659211"
geodist所定位置間の距離
geodistは、2つの所与の位置間の距離GEODIST key member1 member2 [m|km|ft|mi]
を返すために使用される最後の距離単位パラメータの説明:m:m、デフォルト単位.km:千メートル.mi:マイルです.ft:フィート.127.0.0.1:6379> geodist china:city chongqing hangzhou km #
"1318.8910"
georadius、georadiusbymember半径
georadiusは、所与の緯度を中心として、戻りキーに含まれる位置要素のうち、中心との距離が所与の最大距離を超えないすべての位置要素を含む.GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
パラメータの説明:
m:メートル、デフォルト単位.km:千メートル.mi:マイルです.ft:フィート.WITHDIST:位置要素を返すと同時に、位置要素と中心との距離も一緒に返します.WITHCOORD:位置要素の経度と次元も一緒に返します.WITHHASH:52ビットの符号付き整数の形で、元のgeohash符号化された位置要素の秩序化集合スコアを返す.このオプションは主に下位アプリケーションやデバッグに使用され、実際の役割は大きくありません.COUNTは、返されるレコードの数を制限します.ASC:検索結果は距離によって近距離から遠距離に並べ替えられます.DESC:検索結果は遠近から並べ替えられます.127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km # 110 30 1000km
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km
1) "chongqing"
2) "xian"
georadiusbymemberの中心点は、所与の位置要素によって決定されるGEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
127.0.0.1:6379> GEORADIUSBYMEMBER china:city hangzhou 1000 km # 1000km
1) "hangzhou"
2) "shanghai"
geohash
Redis GEOは、geohashを使用して地理的位置の座標geohashを保存し、1つまたは複数の位置要素のgeohash値を取得する.GEOHASH key member [member ...]
2次元の緯度を1次元の文字列に変換し、2つの文字列が近づくほど距離が近づく127.0.0.1:6379> geohash china:city hangzhou chongqing
1) "wtmkn31bfb0"
2) "wm5xzrybty0"
hyperloglog
127.0.0.1:6379> geoadd china:city 16.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 chongqing 114.05 22.52 shenzhen
(integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 2
127.0.0.1:6379> geopos china:city beijing #
1) 1) "16.39999955892562866"
2) "39.90000009167092543"
127.0.0.1:6379> geopos china:city chongqing
1) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379> geodist china:city chongqing hangzhou km #
"1318.8910"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km # 110 30 1000km
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km
1) "chongqing"
2) "xian"
127.0.0.1:6379> GEORADIUSBYMEMBER china:city hangzhou 1000 km # 1000km
1) "hangzhou"
2) "shanghai"
127.0.0.1:6379> geohash china:city hangzhou chongqing
1) "wtmkn31bfb0"
2) "wm5xzrybty0"
!!
アプリケーションシーン:Webサイト統計ユーザーアクセスuv pfadd
127.0.0.1:6379> pfadd mykey a b c d e
(integer) 1
127.0.0.1:6379> pfadd mykey1 a b q w o
(integer) 1
pfcount統計基数数数数
127.0.0.1:6379> pfcount mykey
(integer) 5
127.0.0.1:6379> pfcount mykey1
(integer) 5
pfmerge複数hyperloglogをマージ
127.0.0.1:6379> pfmerge mykey3 mykey mykey1
OK
127.0.0.1:6379> pfcount mykey3
(integer) 8
bitmap
適用シーン:
2つの状態であればbitmapsを使用できます
bitmapsはいずれも操作バイナリでビット記録を行う
setbit
SETBIT key offset value
valueは0または1のみです
bitmapを使用して月曜日から日曜日までのカードを記録します
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 0
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0
127.0.0.1:6379> setbit sign 6 1
(integer) 0
getbit
ある日カードを打ったかどうかを確認します
127.0.0.1:6379> getbit sign 3
(integer) 1
127.0.0.1:6379> getbit sign 6
(integer) 1
bitcount統計
127.0.0.1:6379> bitcount sign #
(integer) 3