Snailclimb / JavaGuide

「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!
https://javaguide.cn
Apache License 2.0
146.94k stars 45.61k forks source link

缓存穿透使用布隆过滤器解决的描述是否有误 #2538

Closed Fan223 closed 2 hours ago

Fan223 commented 2 hours ago

这里写的是把可能存在的请求的值放入布隆过滤器,不应该是 key 吗,我正是要通过 key 获取值,怎么先知道值是多少然后去判断,知道的话那不不用获取直接返回了,不应该是判断 key 存不存在,然后通过 key 去获取值 image

fox-half-tian commented 2 hours ago

文章中的说的“值”可以是你认为的 key,没问题的

fox-half-tian commented 2 hours ago

你说的 key-value 是双列集合里的概念,而 set、list、布隆过滤器这些是单列集合,存储的元素我们通常称为 “值”

Snailclimb commented 2 hours ago

这里写的是把可能存在的请求的值放入布隆过滤器,不应该是 key 吗,我正是要通过 key 获取值,怎么先知道值是多少然后去判断,知道的话那不不用获取直接返回了,不应该是判断 key 存不存在,然后通过 key 去获取值 image

这里的值其实也是指代的是对应的 key-value 。

Fan223 commented 1 hour ago

这里写的是把可能存在的请求的值放入布隆过滤器,不应该是 key 吗,我正是要通过 key 获取值,怎么先知道值是多少然后去判断,知道的话那不不用获取直接返回了,不应该是判断 key 存不存在,然后通过 key 去获取值 image

这里的值其实也是指代的是对应的 key-value 。

就是从实现上来说,应该就是只把key放入布隆过滤器中吧,这里的 key-value,value 应该是不用管的。请求的值,比如我要请求用户的邮箱,值指的应该是具体的比如xxx@xxx.com,那我肯定不会把这个存入布隆过滤器,而是可能存user:email:id之类的,那么这里说的请求的值放入布隆过滤器是不是描述有点问题。 我知道表达的就是一个判断是否存在的意思,就是看上去感觉有点歧义,至少我第一眼看是感觉有点疑惑的,也可能有点抠字眼,理解不同。 还有前面那位说的布隆过滤器中描述为值,这个我觉得是没啥问题的,不过文中的“值”前面加了条件,请求的值,那么应该是先以前面的条件为准。如果把请求去掉,直接描述为把所有值放入布隆过滤器,这个“值”就能代表布隆过滤器里的值的意思,可能有点抠字眼,但是语义理解的话,应该是这样,个人感觉。 emm,也不用仔细考究这个,只是第一眼有点疑惑,从上下文和用法知道是这个意思就行