HyperLogLog操作命令、Geospatial操作命令、发布订阅命令

HyperLogLog操作命令

​ 该数据类型可以简单理解为一个 set 集合,集合元素为字符串。但实际上HyperLogLog 是一种基数计数概率算法,通过该算法可以利用极小的内存完成独立总数的统计。其所有相关命令都是对这个“set 集合”的操作。

​ HyperLogLog 可对数据量超级庞大的日志数据做不精确的去重计数统计。当然,这个不精确的度在 Redis 官方给出的误差是 0.81%。这个误差对于大多数超大数据量场景是被允许的。对于平台上每个页面每天的 UV 数据,非常适合使用 HyperLogLog 进行记录。(UV数据是唯一访问者,比如计算ip访问的总数,PV数据是求访问量用户每次刷新即被计算一次)

pfadd

格式:PFADD key element [element …]

功能:将任意数量的元素添加到指定的 HyperLogLog 集合里面。如果内部存储被修改了返回 1,否则返回 0。

pfcount

格式:PFCOUNT key [key …]

功能:该命令作用于单个 key 时,返回给定 key 的 HyperLogLog 集合的近似基数;该命令作用于多个 key 时,返回所有给定 key 的 HyperLogLog 集合的并集的近似基数;如果key 不存在,则返回 0。

pfmerge

格式:PFMERGE destkey sourcekey [sourcekey …]

功能:将多个 HyperLogLog 集合合并为一个 HyperLogLog 集合,并存储到 destkey 中,合并后的 HyperLogLog 的基数接近于所有 sourcekey 的 HyperLogLog 集合的并集。

Geospatial 操作命令

该类型本质上仍是一种集合,只不过集合元素比较特殊,是一种由三部分构成的数据结构,这种数据结构称为空间元素:

经度:longitude。有效经度为[-180,180]。正的表示东经,负的表示西经。

纬度:latitude。有效纬度为[-85.05112878,85.05112878]。正的表示北纬,负的表示南纬。

位置名称:为该经纬度所标注的位置所命名的名称,也称为该 Geospatial 集合的空间元素名称。

geoadd

格式:GEOADD key longitude latitude member [longitude latitude member …]

功能:将一到多个空间元素添加到指定的空间集合中。

说明:当用户尝试输入一个超出范围的经度或者纬度时,该命令会返回一个错误。

geopos

格式:GEOPOS key member [member …]

功能:从指定的地理空间中返回指定元素的位置,即经纬度。

说明:因为该命令接受可变数量元素作为输入,所以即使用户只给定了一个元素,命令也会返回数组。

geodist

格式:GEODIST key member1 member2 [unit]

功能:返回两个给定位置之间的距离。其中 unit 必须是以下单位中的一种:

  • m :米,默认

  • km :千米

  • mi :英里

  • ft:英尺

说明:如果两个位置之间的其中一个不存在, 那么命令返回空值。另外,在计算距离时会假设地球为完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 的误差。

geohash

格式:GEOHASH key member [member …]

功能:返回一个或多个位置元素的 Geohash 值。

说明:GeoHash 是一种地址编码方法。他能够把二维的空间经纬度数据编码成一个字符串。该值主要用于底层应用或者调试, 实际中的作用并不大。

georadius

格式:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

功能:以给定的经纬度为中心,返回指定地理空间中包含的所有位置元素中,与中心距离不超过给定半径的元素。返回时还可携带额外的信息:

  • WITHDIST :在返回位置元素的同时,将位置元素与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致。

  • WITHCOORD :将位置元素的经维度也一并返回。

  • WITHHASH:将位置元素的 Geohash 也一并返回,不过这个 hash 以整数形式表示

命令默认返回未排序的位置元素。 通过以下两个参数,用户可以指定被返回位置元素的排序方式:

  • ASC :根据中心的位置,按照从近到远的方式返回位置元素。

  • DESC :根据中心的位置,按照从远到近的方式返回位置元素。

说明:在默认情况下, 该命令会返回所有匹配的位置元素。虽然用户可以使用 COUNT 选项去获取前 N 个匹配元素,但因为命令在内部可能会需要对所有被匹配的元素进行处理,所以在对一个非常大的区域进行搜索时,即使使用 COUNT 选项去获取少量元素,该命令的执行速度也可能会非常慢。

georadiusbymember

格式:GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]

功能:这个命令和 GEORADIUS 命令一样,都可以找出位于指定范围内的元素,但该命令的中心点是由位置元素形式给定的,而不是像 GEORADIUS 那样,使用输入的经纬度来指定中心点。

说明:返回结果中也是包含中心点位置元素的。

发布订阅命令

subscribe

格式:SUBSCRIBE channel [channel …]

功能:Redis 客户端通过一个 subscribe 命令可以同时订阅任意数量的频道。在输出了订阅了主题后,命令处于阻塞状态,等待相关频道的消息。

psubscribe

格式:PSUBSCRIBE pattern [pattern …]

功能:订阅一个或多个符合给定模式的频道。

说明:这里的模式只能使用通配符 ‘’‘’。例如,it 可以匹配所有以 it 开头的频道,像 it.news、it.blog、it.tweets 等;news.*可以匹配所有以 news.开头的频道,像 news.global.today、news.it 等。

publish

格式:PUBLISH channel message

功能:Redis 客户端通过一条 publish 命令可以发布一个频道的消息。返回值为接收到该消息的订阅者数量。

unsubscribe

格式:UNSUBSCRIBE [channel [channel …]]

功能:Redis 客户端退订指定的频道。

说明:如果没有频道被指定,也就是一个无参数的 UNSUBSCRIBE 命令被执行,那么客户端使用 SUBSCRIBE 命令订阅的所有频道都会被退订。在这种情况下,命令会返回一个信息,告知客户端所有被退订的频道。

punsubscribe

格式:PUNSUBSCRIBE [pattern [pattern …]]

功能:退订一个或多个符合给定模式的频道。

说明:这里的模式只能使用通配符 *。如果没有频道被指定,其效果与 SUBSCRIBE 命令相同,客户端将退订所有订阅的频道。

pubsub

格式:PUBSUB [argument [argument …]]

功能:PUBSUB 是一个查看订阅与发布系统状态的内省命令集,它由数个不同格式的子命令组成,下面分别介绍这些子命令的用法。

pubsub channels

格式:PUBSUB CHANNELS [pattern]

功能:列出当前所有的活跃频道。活跃频道指的是那些至少有一个订阅者的频道。

说明:pattern 参数是可选的。如果不给出 pattern 参数,将会列出订阅/发布系统中的所有活跃频道。如果给出 pattern 参数,那么只列出和给定模式 pattern 相匹配的那些活跃频道。pattern 中只能使用通配符*。

pubsub numsub

格式:PUBSUB NUMSUB [channel-1 … channel-N]

功能:返回给定频道的订阅者数量。不给定任何频道则返回一个空列表。

pubsub numpat

格式:PUBSUB NUMPAT

功能:查询当前 Redis 所有客户端订阅的所有频道模式的数量总和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值