开发者社区> 问答> 正文

redis存储结构中,存储坐标点及其多维度点击数

我现在有个需求
需要记录页面点击数据,上游吐到redis中,上游怎么吐到redis中对我们来说是透明的,
我们只用关心redis中如何存储就好。
查询需求为

  1. 查询某天某页面某分辨率下所有有效点击总数和无效点击总数
    2.查询某天某页面某分辨率下所有的点及点击数
  2. 框选查询(相当于范围查询) 查询某天某页面某分辨率下 某些坐标点的有效点击总数和无效点击总数。
    以及各种维度(比如点击时使用的浏览器,点击地区) 的有效点击数和无效点击数

当前实现是,
一个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的值
当前实现的问题是:查询速度太慢 全页面查询和全部点查询 可以利用异步任务进行缓存以优化查询速度
但是框选行为 因为范围不定,所以无法进行缓存,导致查询速度很慢。
不知道大家针对查询需求有没有什么更好的设计方案,请多指教。

展开
收起
落地花开啦 2016-02-21 17:07:21 3379 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

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

    2019-07-17 18:46:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载