Redis的3个高级数据结构( 二 )

PFMERGE命令说明:
PFMERGE destkey sourcekey [sourcekey ...]Merge N different HyperLogLogs into a single one.用法(把hll1和hll2合并到hlls中):
127.0.0.1:6380> PFADD hll1 1 2 3(integer) 1127.0.0.1:6380> PFADD hll2 3 4 5(integer) 1127.0.0.1:6380> PFMERGE hlls hll1 hll2OK127.0.0.1:6380> PFCOUNT hllsHLL数据结构的一个使用场景就是计算用户每天在搜索框中执行的唯一查询,即搜索页面UV统计 。而Bitmaps则用于判断某个用户是否访问过搜索页面 。这是它们用法的不同 。
GEORedis的GEO特性在 Redis3.2版本中推出,这个功能可以将用户给定的地理位置(经度和纬度)信息储存起来,并对这些信息进行操作 。GEO相关命令只有6个:

  • GEOADD:GEOADD key longitude latitude member [longitude latitude member …],将指定的地理空间位置(纬度、经度、名称)添加到指定的key中 。例如:GEOADD city 113.501389 22.405556 shenzhen;
经纬度具体的限制,由EPSG:900913/EPSG:3785/OSGEO:41001规定如下:有效的经度从-180度到180度 。有效的纬度从-85.05112878度到85.05112878度 。当坐标位置超出上述指定范围时,该命令将会返回一个错误 。
  • GEOHASH:GEOHASH key member [member …],返回一个或多个位置元素的标准Geohash值,它可以在http://geohash.org/使用 。查询例子:http://geohash.org/sqdtr74hyu0.(可以通过谷歌了解Geohash原理,或者戳Geohash基本原理:https://www.cnblogs.com/tgzhu/p/6204173.html) 。
  • GEOPOS:GEOPOS key member [member …],从key里返回所有给定位置元素的位置(经度和纬度) 。
  • GEODIST:GEODIST key member1 member2 [unit],返回两个给定位置之间的距离 。GEODIST命令在计算距离时会假设地球为完美的球形 。在极限情况下,这一假设最大会造成0.5%的误差 。
指定单位的参数unit必须是以下单位的其中一个:m 表示单位为米(默认) 。km 表示单位为千米 。mi 表示单位为英里 。ft 表示单位为英尺 。
  • GEORADIUS:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count],以给定的经纬度为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素 。这个命令可以查询某城市的周边城市群 。
  • GEORADIUSBYMEMBER:GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count],这个命令和GEORADIUS命令一样,都可以找出位于指定范围内的元素,但是GEORADIUSBYMEMBER的中心点是由给定的位置元素决定的,而不是像 GEORADIUS那样,使用输入的经度和纬度来决定中心点 。
指定成员的位置被用作查询的中心 。
GEO的6个命令用法示例如下:
redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"(integer) 2redis> GEOHASH Sicily Palermo Catania1) "sqc8b49rny0"2) "sqdtr74hyu0"redis> GEOPOS Sicily Palermo Catania NonExisting1) 1) "13.361389338970184" 2) "38.115556395496299"2) 1) "15.087267458438873" 2) "37.50266842333162"3) (nil)redis> GEODIST Sicily Palermo Catania"166274.15156960039"redis> GEORADIUS Sicily 15 37 100 km1) "Catania"redis> GEORADIUS Sicily 15 37 200 km1) "Palermo"2) "Catania"redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km1) "Agrigento"2) "Palermo"



推荐阅读