我们的分布式存储项目使用LevelDB作为存储引擎,memcached作为缓存层,我们有一个场景:95%的key查询在存储引擎中是不存在的。
在memcached层,如果找不到key,则查询LevelDB。
在 LevelDB 中,我们使用默认的布隆过滤器来判断 key 是否存在,但仍然有 1% 的误报率。由于 1% 的百分比,我们必须通过 IO 请求该值,这是客户端无法容忍的。(95% 的密钥不存在)
有没有更好的解决方案来知道密钥是否不存在?
更新: 1. 每天都会生成密钥(用户ID+日期),一旦无法获取密钥,客户端会将值放入存储层。2.客户端想要读取延迟(TP99)< x ms(客户端对延迟敏感)