redis_bitmap翻车的记录.md

今天做一个需求,广告页,要求一天仅显示一次。

数据是存在 redis 的,当时想着用 bitmap 可以节约空间,一个用户仅需要 1 bit。
但是实际使用中,遇到了几个坑。userId 是 long 型的。bitmap 只能用 int。

这里把 long hash 成 int,能解决,但是有 hash 碰撞的风险。不过就算发生了 hash 碰撞也无所谓,

然后按这个方案继续。能成功,一切正常。

但是无意中去 redis 看的时候,这个 key 的 大小有 100M。
只存一个用户也是 100M。
然后我还是按不同的商户存不同的 bitmap。
还好是在测试环境发现了,如果上了生产,就可以直接找工作了。。。

这里分析一下。

bitmap 缺失可以节约空间,一个用户最多是 256M,一亿个用户也是 256M。

但是我们用户少啊。。用这个方案就不太合适了

然后 我们的用户 Id 是雪花算法 Id,不是连续的,其实用 bitmap 也不适合


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!