需要获取货品每天的数量,有什么好的实现方式吗?

有个需求是这样,存在大约15w条货品记录,现在需要可以计算过去某天或者某个时间段的货品的数量,这个应该如何来存储呢?
现在想到的方法是,开一个数据库,然后每天0点存储记录,但是这个很快就会爬升到很大的数据量了,10天就上百万了。

X先生
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

可以利用Redis的有序集合

参考:
Redis sorted set

7年前 评论
xcaptain

@jacobsun 这种方案不能实现按时间维度查询,比如说昨天每种物品的数量,昨天库存前几名的物品编号。估计作者是想实现多种维度查询。

7年前 评论

有些东西,不是需要实时统计的。比如:获取某个时间段的网站访问量,其实第二天,就可以把昨天的数据统计后,记录一个总数就可以了。如果要精确到小时,就统计保存上一小时的总数就可以了。

7年前 评论

@MrJing 对的,是只需要记录每天的数据量,所以我想每天凌晨记录一次,只是不清楚用哪种方式来处理比较好

7年前 评论

每次库存量变动的时候写条日志记录一下数量和当前时间,最后查询的时候条件小于等于指定时间点,按日志时间倒序排列,然后取第一条就ok了。
这样的日志信息可以存储在 ElasticSearch。

7年前 评论
Ryan

所说的时间段如果只是精确到小时的话,其实用Redis的Hash数据结构也可以实现,用Y-m-d H或者 H 作为hash key ,每天的hash key 也就是0-24,有新的货品只要hIncrBy,获取某个时间段通过hmget就可以了,当然你也可以定时每天从redis里面取一次统计数据记录到表中,这样可以方便对数据进行排序筛选等功能

7年前 评论

有考虑过用redis,但是数据量增长比较快,用redis的话很快也不能满足需求了

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!