首页
编程随笔
Java笔记
Html/Css/Js
Android
后端笔记
服务器搭建
BUG收集
Java异常
Android异常
在线工具
Json格式化
编码/解码
Epub在线编辑
登录
发布文章
个人文章
退出登录
首页
技术教程
BUG收集
在线工具
资源下载
登录
发布文章
退出登录
搜索
当前位置:
首页
-
博客
- 正文
关闭
使用redis中的bitmap作为布隆过滤器导致内存溢出
更新时间:2023-07-22 03:01:04
阅读数:1845
发布者:落幕
```java double pow = Math.pow(2, 32); int hashcode = Math.abs(username.hashCode()); long index = (long)(hashcode % pow); redisTemplate.opsForValue().setBit(ConstantParas.BLOOM_USERNAME, index, true); ``` bitmap 内存暴涨原因: bitmap 在 redis 中按 string 来存储,因此上限是 512MB(2^32 bits). 因此当我的第二个 setbit 值为 2^32-1=4294967295 时,由于 redis 没有采用压缩实现,就会直接申请到 512MB 内存空间来存储 2^32-1 bit 位置的值 1,中间的 bit 也会全填上 0.