技术求助帖,关于 redis 大 value 存储的问题

2020 年 11 月 30 日
 hehe12980

这是我在 V2EX 的第一个帖子

最近遇到一个业务场景,外部接口每隔 5 秒种会给我一批温度参数, 分别为每个机器上的不同温度,需要在前台动态曲线图实时显示,前台 每次 只能 看某 1 天和某一个机器的 温度参数, 历史数据曲线图 可以查询

技术上我做了分表,每一天的数据建一张表,大概 100 台左右的机器数量,每一天的数据 172 万, 单台机器的温度数据每天大概为 1.7 万

前置条件: 任何一台机器温度数据一旦生成是不会变的,我的思路能不能放缓存中,这样就不用去 100 多万条数据,拿机器编号去匹配了

但是我尝试把 1.7 万条数据 放入 redis 中,这个时候 redis 直接报了个命令超时,应该是 value 过大,导致性能下降,IO 瓶颈太大

所以 这种场景的需求究竟要怎么处理呢? 感觉 我这个需求和股票的实时曲线很像 好难啊 呜呜呜

7255 次点击
所在节点    程序员
73 条回复
akira
2020 年 12 月 1 日
influxdb + prometheus
no1xsyzy
2020 年 12 月 1 日
你这是把 redis 当 kv store 了?
no1xsyzy
2020 年 12 月 1 日
我跟你说,你只是作一个复杂 query 的缓存的话,取巧的,直接拿文件做
noparking188
2020 年 12 月 1 日
我咋感觉分表分得更难做了,也许应该换个分表方式
noqwerty
2020 年 12 月 1 日
这两天刚好在玩类似的东西,influxdb+grafana 完美契合
Yuansir
2020 年 12 月 1 日
这应该是时序数据干的活
jhhhh
2020 年 12 月 1 日
redis 不合适,mysql 不想用。
那可以尝试下文件方式。按你后续要搜索的条件去存储响应格式内容的文件。
xuanbg
2020 年 12 月 1 日
这个需求不适合用 redis,内存会炸。influxdb 还是比较合适的。

问题是你画曲线直接用 5 秒的原始数据?这 x 轴 17280 个坐标点?什么显示器能把 1 天的数据给显示全了,18K 么???
hehe12980
2020 年 12 月 1 日
@xuanbg 那个可以曲线图可以伸缩的
hehe12980
2020 年 12 月 1 日
@xuanbg 像股票的曲线图是秒级的 一天差不多也 1 万多个点 它们的曲线图 不就显示全了,只要曲线很平滑就能显示的很舒服
fengpan567
2020 年 12 月 1 日
K 线图都没你这数据量大,时间周期短的也是 1 分钟
Mithril
2020 年 12 月 1 日
直接上时序数据库。懒得折腾 influxdb 的花,直接 prometheus 。
连代码都不用写。。
digitv
2020 年 12 月 1 日
@hehe12980 因为从你的场景出发,这个是完全没必要的,你说的这个 sql 完全就可以满足,没必要提早过度优化。
stevenkang
2020 年 12 月 1 日
5 秒钟上报一次,按天的维度下,并不需要 5 秒钟刷新一次前端展示。

按天算,24 小时 x 60 分钟 = 1440,一分钟刷新一次足以满足需求。多了也看不出来有啥变化。

按小时算,60 分钟 x 60 秒 = 3600,算一半 1800,两秒钟刷新一次也满足需求,多了同样看不出来啥变化。

总之,不要在一个时间范围很大的维度上,展示的数据粒度又很小,那样无意义(参考各种监控系统的设计)。
xiaofan2
2020 年 12 月 1 日
上面说的时序数据库完全可以 目前我们公司运维用的是 clicckhouse,这个感觉应该也可以,但我还没深入了解过,你可以了解下
hehe12980
2020 年 12 月 1 日
@fengpan567 K 线图是分钟级别的么 那比如一分钟 60 个价格的点 K 线图的价格 怎么变成一个点 取平均值?
Garland
2020 年 12 月 1 日
唔,这个是时序数据库的标准场景了。
Jrue0011
2020 年 12 月 1 日
哈哈哈所以这算是一个经典 XY 问题吗,本身要解决的不是 redis 存大 value,甚至都不是大量数据的查询优化,而是本身这个数据展示的需求设计
muskill
2020 年 12 月 1 日
influxdb 合适
hehe12980
2020 年 12 月 1 日
@Jrue0011 咋展示比较合理呢 ==

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/730651

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX