この記事では、Redis の 3 つの特殊なデータ型 (カーディナリティ統計、ビットマップ、地理的位置) について説明します。お役に立てば幸いです。
5 つの基本データ型に加えて、Redis には HyperLogLogs (カーディナリティ統計)、Bitmaps# という 3 つの特別なデータ型もあります。 ## (ビットマップ) および 地理空間 (地理的位置)。 [関連する推奨事項: Redis ビデオ チュートリアル ]
HyperLogLogs (カーディナリティ統計)Redis バージョン 2.8.9 では、Hyperloglog データ構造が更新されました。
#基数とは何ですか?
HyperLogLogs カーディナリティ統計はどのような問題を解決するために使用されますか?
#その利点は何ですか?
127.0.0.1:6379> pfadd key1 a b c d e f g h i # 创建第一组元素 (integer) 1 127.0.0.1:6379> pfcount key1 # 统计元素的基数数量 (integer) 9 127.0.0.1:6379> pfadd key2 c j k l m e g a # 创建第二组元素 (integer) 1 127.0.0.1:6379> pfcount key2 (integer) 8 127.0.0.1:6379> pfmerge key3 key1 key2 # 合并两组:key1 key2 -> key3 并集 OK 127.0.0.1:6379> pfcount key3 (integer) 13
例: ユーザー情報、アクティブ、非アクティブの統計!ログインではなく、ログインしてください!チェックインする、チェックインしないでください!
1 年間のチェックイン ステータスを保存するにはどれくらいのメモリが必要ですか? 365 日 = 365 ビット 1 バイト = 8 ビット 46 バイト程度です。
ビットマップを使用して月曜日からのチェックインを記録します日曜日へ!月曜日: 1 火曜日: 0 水曜日: 0 木曜日: 1...
127.0.0.1:6379> setbit sign 0 1 (integer) 0 127.0.0.1:6379> setbit sign 1 1 (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
127.0.0.1:6379> getbit sign 3 (integer) 1 127.0.0.1:6379> getbit sign 5 (integer) 0
統計操作、記録された日数を数えてください!
127.0.0.1:6379> bitcount sign # 统计这周的打卡记录,就可以看到是否有全勤! (integer) 3
地理空間 (地理的位置)
Redis の Geo は Redis 3.2 バージョンでリリースされました! この関数は地理的位置情報 (2 つの場所の間の距離、半径、マイルからの人々) を計算できます。離れて。#geoadd
地理位置情報を追加127.0.0.1:6379> geoadd china:city 118.76 32.04 manjing 112.55 37.86 taiyuan 123.43 41.80 shenyang
(integer) 3
127.0.0.1:6379> geoadd china:city 144.05 22.52 shengzhen 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 3
2 つのレベルを直接追加することはできません。通常は都市データをダウンロードします (この Web サイトで GEO をクエリできます: http://www.jsons.cn/lngcode)。
有効な経度の範囲は -180 度から 180 度までです。
有効な緯度の範囲は、-85.05112878 度から 85.05112878 度までです。# 当坐标位置超出上述指定范围时,该命令将会返回一个错误。 127.0.0.1:6379> geoadd china:city 39.90 116.40 beijin (error) ERR invalid longitude,latitude pair 39.900000,116.400000
指定されたメンバーの経度と緯度を取得します127.0.0.1:6379> geopos china:city taiyuan manjing
1) 1) "112.54999905824661255"
1) "37.86000073876942196"
2) 1) "118.75999957323074341"
1) "32.03999960287850968"
geodist
存在しない場合は、空を返します 単位は次のとおりです
kmマイルm
127.0.0.1:6379> geodist china:city taiyuan shenyang m "1026439.1070" 127.0.0.1:6379> geodist china:city taiyuan shenyang km "1026.4391"
##近くにいる人==> 近くにいるすべての人の住所、場所、半径を取得します 指定人数を取得
127.0.0.1:6379> georadius china:city 110 30 1000 km 以 100,30 这个坐标为中心, 寻找半径为1000km的城市 1) "xian" 2) "hangzhou" 3) "manjing" 4) "taiyuan" 127.0.0.1:6379> georadius china:city 110 30 500 km 1) "xian" 127.0.0.1:6379> georadius china:city 110 30 500 km withdist 1) 1) "xian" 2) "483.8340" 127.0.0.1:6379> georadius china:city 110 30 1000 km withcoord withdist count 2 1) 1) "xian" 2) "483.8340" 3) 1) "108.96000176668167114" 2) "34.25999964418929977" 2) 1) "manjing" 2) "864.9816" 3) 1) "118.75999957323074341" 2) "32.03999960287850968"
指定されたメンバーの特定の半径内にある他のメンバーを表示します#georadiusbymember
127.0.0.1:6379> georadiusbymember china:city taiyuan 1000 km
1) "manjing"
2) "taiyuan"
3) "xian"
127.0.0.1:6379> georadiusbymember china:city taiyuan 1000 km withcoord withdist count 2
1) 1) "taiyuan"
2) "0.0000"
3) 1) "112.54999905824661255"
2) "37.86000073876942196"
2) 1) "xian"
2) "514.2264"
3) 1) "108.96000176668167114"
2) "34.25999964418929977"
geohash (あまり使用されません)このコマンドは 11 文字のハッシュ文字列を返します
127.0.0.1:6379> geohash china:city taiyuan shenyang
1) "ww8p3hhqmp0"
2) "wxrvb9qyxk0"
Underlying
geo底层的实现原理实际上就是Zset, 我们可以通过Zset命令来操作geo
127.0.0.1:6379> type china:city zset
查看全部元素 删除指定的元素
127.0.0.1:6379> zrange china:city 0 -1 withscores 1) "xian" 2) "4040115445396757" 3) "hangzhou" 4) "4054133997236782" 5) "manjing" 6) "4066006694128997" 7) "taiyuan" 8) "4068216047500484" 9) "shenyang" 1) "4072519231994779" 2) "shengzhen" 3) "4154606886655324" 127.0.0.1:6379> zrem china:city manjing (integer) 1 127.0.0.1:6379> zrange china:city 0 -1 1) "xian" 2) "hangzhou" 3) "taiyuan" 4) "shenyang" 5) "shengzhen"
更多编程相关知识,请访问:编程视频!!
以上がRedis の特殊なデータ型についての深い理解: カーディナリティ統計、ビットマップ、地理的位置の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。