当前位置:网站首页>Cache penetration and bloom filter
Cache penetration and bloom filter
2022-07-03 12:50:00 【Mcc_ mingchao】
What is cache penetration ?
Cache penetration is simply A lot of Requested key It doesn't exist in the cache at all , Causes the request to go directly to the database , There's no caching at all . for instance : Some hacker deliberately creates something that doesn't exist in our cache key Make a lot of requests , Causes a large number of requests to fall to the database .

We usually use bloom filter to solve cache penetration , Store the values of all possible requests in the bloom filter , When the user requests to come , First judge whether the value of the request from the user exists in the bloom filter . If it doesn't exist , Directly return the request parameter error information to the client , If there is one, the following process will be followed .

( Add bloom filter )
- You can actually think of it as a binary vector ( Or bit array ) And a series of random mapping functions ( hash function ) Two part data structure .
- Its advantage is that the spatial efficiency and query time are much better than the general algorithm , The disadvantage is that it has certain error recognition rate and deletion difficulty .

As shown in the figure , When adding elements to the bloom filter , This element first generates different hash values by multiple hash functions , Then the elements in the following table of the corresponding digit group are set to 1( When the bit array is initialized , All positions are 0). When the same string is stored the second time , Because the previous corresponding position has been set to 1, So it's easy to know that this value already exists .
If we need to judge whether an element is in the bloom filter , Just do the same hash again for the given string , After getting the value, judge the Every element Is it all for 1, If the value is 1, So this value is in the bloom filter , If there is a value that is not 1, Indicates that the element is not in the bloom filter .
Different strings may be hashed out in the same place , In this case, we can increase the number group size or adjust our hash function .
therefore , The bloom filter says that an element exists , A small probability will miscalculate ,( Like in the picture d, Although the positions obtained by three hash functions are 1, When they are all put in by different elements before ) The bloom filter says that an element is not there , Then this element must not be in .
The following is a very simple analog bloom filter I wrote , For the convenience of understanding , I acquiesce key It's all numbers , But in reality, more often than not, strings
import java.util.HashSet; import java.util.Random; import java.util.Scanner; import java.util.Set; public class Bloom { static public int hash1(int x){ return x%7; } static public int hash2(int x){ return x%17; } static public int hash3(int x){ return x%27; } public static void main(String[] args) { boolean arr[]=new boolean[27]; Set set=new HashSet(); for(int i=0;i<5;i++){ Random random=new Random(); int r=random.nextInt(100); System.out.println("redis contain "+r); set.add(r); arr[hash1(r)]=true; arr[hash2(r)]=true; arr[hash3(r)]=true; } int x=0; System.out.println(" Enter the number to search "); Scanner sc=new Scanner(System.in); x=sc.nextInt(); if (arr[hash1(x)] == true &&arr[hash2(x)] == true&&arr[hash3(x)] == true){ if(set.contains(x)){ System.out.println(" eureka ");; } else{ System.out.println(" misjudged "); set.remove(x); } } else{ System.out.println("redis Does not exist in "); } } }
The effect is as shown in the picture
边栏推荐
- Implement verification code verification
- Record your vulnhub breakthrough record
- Application of ncnn Neural Network Computing Framework in Orange Pi 3 Lts Development Board
- Swift return type is a function of function
- Social community forum app ultra-high appearance UI interface
- 剑指Offer05. 替换空格
- 4. Wireless in vivo nano network: electromagnetic propagation model and key points of sensor deployment
- Redhat5 installing socket5 proxy server
- The solution to change the USB flash disk into a space of only 2m
- Airflow installation jump pit
猜你喜欢

Drop down refresh conflicts with recyclerview sliding (swiperefreshlayout conflicts with recyclerview sliding)

Xctf mobile--app1 problem solving

Low code platform international multilingual (I18N) technical solution
![Sword finger offer03 Repeated numbers in the array [simple]](/img/cf/c1ad2f2a45560b674b5b8c11fed244.png)
Sword finger offer03 Repeated numbers in the array [simple]

Solve the problem of VI opening files with ^m at the end

并网-低电压穿越与孤岛并存分析

With pictures and texts, summarize the basic review of C language in detail, so that all kinds of knowledge points are clear at a glance?

【ArcGIS自定义脚本工具】矢量文件生成扩大矩形面要素

idea将web项目打包成war包并部署到服务器上运行

Eureka self protection
随机推荐
Node. Js: use of express + MySQL
Redhat5 installing socket5 proxy server
写一个简单的nodejs脚本
最新版抽奖盲盒运营版
Xctf mobile--app2 problem solving
Sword finger offer09 Implementing queues with two stacks
Eureka自我保护
studio All flavors must now belong to a named flavor dimension. Learn more
Swift return type is a function of function
Social community forum app ultra-high appearance UI interface
Oh my Zsh + TMUX installation
temp
02_ Lock the code, and don't let the "lock" become a worry
GaN图腾柱无桥 Boost PFC(单相)七-PFC占空比前馈
剑指Offer05. 替换空格
电压环对 PFC 系统性能影响分析
[ManageEngine] the role of IP address scanning
Project video based on Linu development
The upward and downward transformation of polymorphism
ncnn神經網絡計算框架在香柳丁派OrangePi 3 LTS開發板中的使用介紹
