关于 bitmap 持久化的一点疑惑

2018-06-30 15:38:25 +08:00
 funky
现在情况是采用 redis bitmap 作为分析用户维度的一种手段。key 是表示该维度,value 表示 uid 的 bitmap
但是随着时间推移,bitmap 会越来越多,是否能将 bitmap 持久化之后转存文件而不占用 redis 内存,需要查询的时候再从文件 load 进内存?
2352 次点击
所在节点    问与答
7 条回复
funky
2018-06-30 15:39:40 +08:00
或者说那种数据库支持这种数据结构?
teleme
2018-06-30 16:08:54 +08:00
@funky 按照这个设计思路内存应该足够用了。因为每个 bitmap 的长度是最大的 uid。总内存占用是非常可控的。
teleme
2018-06-30 16:12:37 +08:00
@funky 持久化的话,bitmap 读成 buffer,然后 gzip 一下当文件存
funky
2018-06-30 18:15:06 +08:00
@teleme 是的,但是架不住 N 多个需要分析的维度,每个 bitmap 占不到 1M,
ywind
2018-06-30 19:20:50 +08:00
@funky 能接受有误差的话,可以考虑一下布隆过滤器,数据可以更小一点。
des
2018-06-30 19:22:06 +08:00
直接存数据库 blob
postgre 应该有插件可以直接读,冷数据这样存是个不错的主意

还有,直接存文件不是个好主意
teleme
2018-06-30 19:28:59 +08:00
@funky 我的一点看法是,维度是不是需要考虑时间单位,如果有时效性的话,bitmap key 设置 expire 这样,redis 可以把内存维护得非常稳定。历史冷数据的持久化,可以考虑 S3 或者 OSS 这类云服务。

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

https://www.v2ex.com/t/467062

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

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

© 2021 V2EX