目录
- HyperLogLog操作命令
- pfadd
- pfcount
- pfmerge
- Geospatial 操作命令
- geoadd
- geopos
- geodist
- geohash
- georadius
- georadiusbymember
- 发布订阅命令
- subscribe
- psubscribe
- publish
- unsubscribe
- punsubscribe
- pubsub
- pubsub channels
- pubsub numsub
- pubsub numpat
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 所有客户端订阅的所有频道模式的数量总和