当前位置:   article > 正文

Redis位图和地理空间GEO介绍与使用

Redis位图和地理空间GEO介绍与使用

1、位图

应用场景

在很多互联网应用中,我们会存在签到送积分、签到领取奖励等这样的需求,比如:

签到1天送10积分,连续签到2天送20积分,3天送30积分,4天以上均送50积分等。
如果连续签到中断,则重置计数,每月初重置计数。
显示用户某个月的签到次数。
在日历控件上展示用户每月签到情况,可以切换年月显示。

BitMaps常用指令

命令功能参数
SETBIT指定偏移量bit位置设置值key offset value 【 0=<offset<2^32】
GETBIT查询指定偏移位置的bit值key offset
BITCOUNT统计指定字节区间bit为1的数量key [start end]【@LBN】
BITFIELD操作多字节位域key [GET type offset] [SET type offset value] [INCRBY type offsetincrement] [OVERFLOW WRAP/SAT/FAIL]
BITPOS查询指定字节区间第一个被设置成1的bit位的位置key bit [start] [end]【@LBN】

考虑到每月初需要重置连续签到次数,最简单的方式是按用户每月存一条签到数据(也可以每年存一条数据)。Key的格式为

u :sign:userid :yyyyNM,Value则采用长度为4个字节(32位)的位图(最大月份只有31天)。位图的每一位代表一天的签到,1表示已签,0表示未签。从高位插入,也就是说左边位算是开始日期。

例如user:sign:98:202883表示用户id=98的用户在2020年3月的签到记录。

2、Redis GEO

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。

Redis GEO 操作方法有:

geoadd:添加地理位置的坐标。
geopos:获取地理位置的坐标。
geodist:计算两个位置之间的距离。
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
geohash:返回一个或多个位置对象的 geohash 值。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

geodist
geodist 用于返回两个给定位置之间的距离。

geodist 语法格式如下:

GEODIST key member1 member2 [m|km|ft|mi]
  • 1

member1 member2 为两个地理位置。

最后一个距离单位参数说明:

  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。

georadius、georadiusbymember
georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

georadiusbymember 和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点。

georadius 与 georadiusbymember 语法格式如下:

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
  • 1
  • 2

参数说明:

  • m :米,默认单位。
  • km :千米。
  • mi :英里。
  • ft :英尺。
  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
  • WITHCOORD: 将位置元素的经度和纬度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
  • COUNT 限定返回的记录数。
  • ASC: 查找结果根据距离从近到远排序。
  • DESC: 查找结果根据从远到近排序。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/684321
推荐阅读
相关标签
  

闽ICP备14008679号