1.Geospatial 操作命令
一种由三部分构成的集合,这种数据结构称为空间元素。经度(longitude):有效经度为[-180,180]。正的表示东经,负的表示西经;纬度(latitude):有效纬度为[-85.05112878,85.05112878]。正的表示北纬,负的表示南纬;位置名称:为该经纬度所标注的位置所命名的名称,也称为该 Geospatial 集合的空间元素名称
1.1.geoadd
1)命令:GEOADD key longitude latitude member [longitude latitude member …]
2)功能:将一到多个空间元素添加到指定的空间集合中
1.2.geopos
1)命令:GEOPOS key member [member …]
2)功能:从指定的地理空间中返回指定元素的位置,即经纬度
1.3.geodist
1)命令:GEODIST key member1 member2 [unit]
2)功能:返回两个给定位置之间的距离。其中 unit :m(米),默认;km(千米); mi(英里); ft(英尺)
1.4.geohash
1)命令:GEOHASH key member [member …]
2)功能:返回一个或多个位置元素的 Geohash 值。GeoHash 是一种地址编码方法。能把二维的空间经纬度数据编码成一个字符串。该值主要用于底层应用或者调试,实际中的作用并不大
1.5.georadius
1)命令:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]
2)功能:以给定的经纬度为中心,返回指定地理空间中包含的所有位置元素中,与中心距离不超过给定半径的元素。WITHDIST :在返回位置元素的同时,将位置元素与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致;WITHCOORD :将位置元素的经维度也一并返回;WITHHASH:将位置元素的 Geohash 也一并返回,不过这个 hash 以整数形式表示命令默认返回未排序的位置元素;ASC :根据中心的位置,从近到远的方式返回位置元素;DESC :根据中心的位置,从远到近的方式返回位置元素;COUNT:获取前 N 个匹配元素
1.6.georadiusbymember
1)命令:GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]
2)功能:这个命令和 GEORADIUS 命令一样,都可以找出位于指定范围内的元素,但该命 令的中心点是由位置元素形式给定的,而不是像 GEORADIUS 那样,使用输入的经纬度来指定中心点。返回结果中也是包含中心点位置元素的
1.7.应用场景
主要应用地理位置相关的计算。例如,微信发现中的“附近”功能,添加朋友中“雷达加朋友”功能;QQ 动态中的“附近”功能;钉钉中的“签到” 功能等
2.发布/订阅命令
2.1.消息系统
发布/订阅( pub/sub),是一种消息通信模式:发布者也称为消息生产者,生产和发送消息到存储系统;订阅者也称为消息消费者,从存储系统接收和消费消息。这个存储系统可以是文件系统 FS、消息中间件 MQ、数据管理系统 DBMS,也可以是 Redis。整个消息发布者、 订阅者与存储系统称为消息系统
消息系统中的订阅者订阅了某类消息后,只要存储系统中存在该类消息,其就可不断的 接收并消费这些消息。当存储系统中没有该消息后,订阅者的接收、消费阻塞。而当发布者 将消息写入到存储系统后,会立即唤醒订阅者。当存储系统放满时,不同的发布者具有不同 的处理方式:有的会阻塞发布者的发布,等待可用的存储空间;有的则会将多余的消息丢失
RocketMQ、Kafka 等消 息中间件构成的消息系统中,发布/订阅的消息都是以主题 Topic 分类的。而 Redis 构成的消 息系统中,发布/订阅的消息都是以频道 Channel 分类的
2.2.subscribe
1)命令:SUBSCRIBE channel [channel …]
2)功能:Redis 客户端通过一个 subscribe 命令可以同时订阅任意数量的频道。在输出了订 阅了主题后,命令处于阻塞状态,等待相关频道的消息
2.3.psubscribe
1)命令:PSUBSCRIBE pattern [pattern …]
2)功能:订阅一个或多个符合给定模式的频道。模式只能使用通配符 *。例如,it* 可以匹配所有以 it 开头的频道,像 it.news、 it.blog、it.tweets 等;news.*可以匹配所有以 news.开头的频道,像 news.global.today、 news.it 等
2.4.publish
1)命令:PUBLISH channel message
2)功能:Redis 客户端通过一条 publish 命令可以发布一个频道的消息。返回值为接收到该消息的订阅者数量
2.5.unsubscribe
1)命令:UNSUBSCRIBE [channel [channel …]]
2)功能:Redis 客户端退订指定的频道。如果没有频道被指定,也就是一个无参数的 UNSUBSCRIBE 命令被执行,那么客户端使用 SUBSCRIBE 命令订阅的所有频道都会被退订
2.6.punsubscribe
1)命令:PUNSUBSCRIBE [pattern [pattern …]]
2)功能:退订一个或多个符合给定模式的频道。模式只能使用通配符 *。如果没有频道被指定,其效果与 SUBSCRIBE 命令 相同,客户端将退订所有订阅的频道
2.7.pubsub
1)命令:PUBSUB<subcommand>[argument [argument …]]
2)功能:PUBSUB 是一个查看订阅与发布系统状态的内省命令集,它由数个不同格式的子 命令组成,下面分别介绍这些子命令的用法
pubsub channels:
(1)命令:PUBSUB CHANNELS [pattern]
(2)列出当前所有的活跃频道(至少有一个订阅者的频道),如果不给出 pattern 参数,将会列出订阅/发布系统中的 所有活跃频道。如果给出 pattern 参数,那么只列出和给定模式 pattern 相匹配的那些活 跃频道。pattern 中只能使用通配符*
pubsub numsub:
(1)命令:PUBSUB NUMSUB [channel-1 … channel-N]
(2)功能:返回给定频道的订阅者数量。不给定任何频道则返回一个空列表
pubsub numpat:
(1)命令:PUBSUB NUMPAT
(2)功能:查询当前 Redis 所有客户端订阅的所有频道模式的数量总和