Redis学习记录----附近商户&用户签到&UV统计篇

99 阅读1分钟

附近商户

GEO数据结构

c90b219c552b6740e9a9657f2aaed87.jpg

导入数据到GEO

d9f1d2bd544dbdd2f615bf39186b9c6.jpg

实现思路:由于附近商户是分类搜索的,所以存储的结构如下

fcda7edb562826e865681d5ea06f5a4.jpg

暂时用单元测试实现

两种方式:

1、分组之后,获取类型id、按类型分组的商户集合,遍历商户集合,把商户id(value)、商户坐标(score)存入redis

特点:单个单个缓存,效率低

2、分组之后,获取类型id、按类型分组的商户集合,遍历商户集合,提前把商户id、商户坐标封装成集合,直接将集合添加进redis

特点:批量缓存,效率高

image.png

image.png

image.png

image.png

实现附近商户搜索

image.png

具体实现:

controller

image.png

service

image.png

service实现类

image.png

image.png

image.png

用户签到

BitMap用法

image.png

image.png

image.png

实现当日签到功能

image.png

image.png

controller

image.png

service

image.png

service实现类

当前是本月的第10天,则offset为9,因为bitmap下标从0开始

image.png

存在问题:数据存储的底层是以字节存储的,不足会补0

image.png

统计连续签到天数

image.png

接口信息

image.png

controller

image.png

service

image.png

service实现类

image.png

bitfield get方法查询某个范围内的比特位,u14表示查到第14个,0表示从头开始查,查到的比特串转换为十进制返回

image.png

image.png

UV统计

HyperLogLog用法

海量数据内存占用极低

image.png

image.png

测试百万数据的统计

image.png