GEO数据结构
允许存储地理坐标信息,帮助我们根据经纬度来检索数据。
附近商户搜索
按照商户类型做分组,类型相同的商户作为同一组,以typeId为key存入同一个GEO集合中即可。
用户签到
BitMap用法
如果按月来统计用户签到信息,签到记录为1,未签到则记录为0。
把每一个bit位对应当月的每一天,形成了映射关系。用0和1标识业务状态,这种思路就称为位图(BitMap)。
签到功能
需求:实现签到接口,将当前用户当天签到信息保存到Redis中
因为BitMap底层是基于String数据结构,因此其操作也都封装在字符串相关操作中了。
签到统计
问题1: 什么叫连续签到天数?
- 从最后一次签到开始向前统计,直到遇到第一次未签到为止,计算总的签到次数,就是连续签到天数。
问题2: 如何得到本月到今天为止的所有签到数据?
问题3: 如何从后向前遍历每个bit位?
- 与1做与运算,就能得到最后一个bit位。
- 随后右移1位,下一个bit位就成为了最后一个bit位。
实现签到统计功能
- 实现接口,统计当前用户截止当前时间在本月的连续签到天数。
UV统计
HyperLogLog用法
- UV:全称Unique Visitor,也叫独立访客量,是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站,只记录1次。
- PV:全称Page View,也叫页面访问量或点击量,用户每访问网站的一个页面,记录1次PV,用户多次打开页面,则记录多次PV,往往用来衡量网站的流量。
UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。但是如果每个访问的用户都保存到Redis中,数据量会非常恐怖。
HyperLogLog用法