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 协议 ,转载请注明出处!