开发者社区> 问答> 正文

【redis存储结构设计】存储坐标点及其多维度点击数:报错

我现在有个需求 

需要记录页面点击数据,上游吐到redis中,上游怎么吐到redis中对我们来说是透明的,

我们只用关心redis中如何存储就好。

查询需求为

1. 查询某天某页面某分辨率下所有有效点击总数和无效点击总数

2.查询某天某页面某分辨率下所有的点及点击数

3. 框选查询(相当于范围查询) 查询某天某页面某分辨率下 某些坐标点的有效点击总数和无效点击总数。

以及各种维度(比如点击时使用的浏览器,点击地区) 的有效点击数和无效点击数


当前实现是, 

一个zset记录全天某页面某分辨率的数据

  key为 date_pageid_分辨率  member为: 有效OR无效_浏览器_地区 score为点击数

每个点一个zset  

key为 date_pageid_分辨率_横坐标_纵坐标  member为: 有效OR无效_浏览器_地区 score为点击数

两个zset 做辅助范围查询 通过zrangebyscore 

date_pageid_分辨率_x member 为 date_pageid_分辨率_横坐标_纵坐标 score为横坐标X的值

date_pageid_分辨率_y member 为 date_pageid_分辨率_纵坐标_纵坐标 score为横坐标y的值

当前实现的问题是:查询速度太慢  全页面查询和全部点查询 可以利用异步任务进行缓存以优化查询速度

但是框选行为 因为范围不定,所以无法进行缓存,导致查询速度很慢。

不知道大家针对查询需求有没有什么更好的设计方案,请多指教。



 

展开
收起
kun坤 2020-06-07 22:43:45 692 0
1 条回答
写回答
取消 提交回答
  • 这个需求用全文检索比较好,可以试试xunsearch。

    ######我能想到两个办法:

    1. 用支持地理信息索引的数据库,比如mongodb
    2. 将地图按照一定尺寸分成小块建索引,根据框选方块先找到这些小方块,然后将小方块里面的数据合并。

    2020-06-07 22:44:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载