大家好,我是哪吒。
今天分享一下Redis布隆过滤器的原理和应用场景,解决缓存穿透,实现快速入门,丰富个人简历,提高面试level,给自己增加一点谈资,秒变面试小达人,BAT不是梦。
Redis缓存预热是指在 服务器 启动或应用程序启动之前,将一些数据先存储到Redis中,以提高Redis的性能和数据一致性。这可以减少服务器在启动或应用程序启动时的数据传输量和延迟,从而提高应用程序的性能和可靠性。
(1)数据准备
在应用程序启动或服务器启动之前,准备一些数据,这些数据可以是静态数据、缓存数据或其他需要预热的数据。
(2)数据存储
将数据存储到Redis中,可以使用Redis的列表(List)数据类型或集合(Set)数据类型。
(3)数据预热
在服务器启动或应用程序启动之前,将数据存储到Redis中。可以使用Redis的客户端工具或命令行工具来执行此操作。
(4)数据清洗
在服务器启动或应用程序启动之后,可能会对存储在Redis中的数据进行清洗和处理。例如,可以删除过期的数据、修改错误的数据等。
需要注意的是,Redis缓存预热可能会增加服务器的开销,因此应该在必要时进行。同时,为了减少预热的次数,可以考虑使用Redis的其他数据类型,如哈希表(Hash)或有序集合(Sorted Set)。此外,为了提高数据一致性和性能,可以使用Redis的持久化功能,将数据存储到Redis中,并在服务器重启后自动恢复数据。
@Component@Slf4jpublic class BloomFilterInit{@Resourceprivate RedisTemplate redisTemplate;//初始化白名单数据@PostConstructpublic void init() {//1 白名单客户加载到布隆过滤器String key = "customer:1";//2 计算hashValue,由于存在计算出来负数的可能,我们取绝对值int hashValue = Math.abs(key.hashCode());//3 通过hashValue和2的32次方后取余,获得对应的下标坑位long index = (long)(hashValue % Math.pow(2,32));log.info(key+" 对应的坑位index:{}",index);//4 设置redis里面的bitmap对应类型白名单:whitelistCustomer的坑位,将该值设置为1redisTemplate.opsForValue().setBit("whitelistCustomer",index,true);}}
Redis缓存雪崩是指在缓存系统中,由于某些原因,缓存的数据突然大量地被删除或修改,导致缓存系统的性能下降,甚至无法正常工作。
1、什么情况会发生缓存雪崩?
(1)误删除
由于误操作或故障,缓存系统可能会误删除一些正常的数据。这种情况通常会在数据库中发生。
(2)误修改
由于误操作或故障,缓存系统可能会误修改一些正常的数据。这种情况通常会在数据库中发生。
(3)负载波动
缓存系统通常会承受一定的负载波动,例如,在高峰期间,数据量可能会大幅增加,从而导致缓存系统的性能下降。
(4)数据变化频繁
如果缓存系统中的数据变化频繁,例如,每秒钟都会有大量的数据插入或删除,那么缓存系统可能会因为响应过慢而导致雪崩。
(1)数据备份
定期备份数据,以防止误删除或误修改。
(2)数据同步
定期同步数据,以防止数据不一致。
(3)负载均衡
使用负载均衡器将请求分配到多个Redis实例上,以减轻单个实例的负载。
(4)数据优化
优化数据库结构,减少数据变化频繁的情况。
(5)监控与告警
监控Redis实例的性能指标,及时发现缓存系统的异常,并发出告警。
Redis缓存穿透是指在Redis缓存系统中,由于某些原因,缓存的数据无法被正常访问或处理,导致缓存失去了它的作用。
1、什么情况会发生缓存穿透?
(1)数据量过大
当缓存中存储的数据量过大时,缓存的数据量可能会超过Redis的数据存储限制,从而导致缓存失去了它的作用。
(2)数据更新频繁
当缓存中存储的数据更新频繁时,缓存的数据可能会出现异步的变化,导致缓存无法被正常访问。
(3)数据过期
当缓存中存储的数据过期时,缓存的数据可能会失去它的作用,因为Redis会在一定时间后自动将过期的数据删除。
(4)数据权限限制
当缓存中存储的数据受到权限限制时,只有拥有足够权限的用户才能访问和处理这些数据,从而导致缓存失去了它的作用。
(5)Redis性能瓶颈
当Redis服务器的性能达到极限时,Redis缓存可能会因为响应过慢而导致穿透。
(1)设置合理的缓存大小
根据实际需求设置合理的缓存大小,以避免缓存穿透。
(2)优化数据结构
根据实际需求优化数据结构,以减少数据的大小和更新频率。
(3)设置合理的过期时间
设置合理的过期时间,以避免缓存失去它的作用。
(4)增加Redis的并发处理能力
通过增加Redis的并发处理能力,以提高缓存的处理能力和响应速度。
(5)优化Redis服务器的硬件和软件配置
通过优化Redis服务器的硬件和软件配置,以提高Redis的性能和处理能力。
Redis缓存穿透
四、通过空对象缓存解决缓存穿透
如果发生了缓存穿透,可以针对要查询的数据,在Redis中插入一条数据,添加一个约定好的默认值,比如defaultNull。
比如你想通过某个id查询某某订单,Redis中没有,MySQL中也没有,此时,就可以在Redis中插入一条,存为defaultNull,下次再查询就有了,因为是提前约定好的,前端也明白是啥意思,一切OK,岁月静好。
这种方式只能解决key相同的情况,如果key都不同,则完蛋。
五、Google布隆过滤器Guava解决缓存穿透
com.google.guava guava 23.0
BloomFilter bloomFilter = BloomFilter.create(Funnels.integerFunnel(), 100);
布隆过滤器中添加元素。
bloomFilter.mightContain(1)
判断布隆过滤器中是否存在。
bloomFilter.mightContain(1)
@Service@Slf4jpublic class GuavaBloomFilterService {public static final int SIZE = 1000000;//误判率public static double fpp = 0.01;//创建guava布隆过滤器private static BloomFilter bloomFilter = BloomFilter.create(Funnels.integerFunnel(), SIZE, fpp);public void guavaBloomFilter() {for (int i = 1; i <= SIZE; i++) {bloomFilter.put(i);}ArrayList list = new ArrayList<>(10000);for (int i = SIZE + 1; i <= SIZE + (10000); i++) {if (bloomFilter.mightContain(i)) {log.info("被误判了:{}", i);list.add(i);}}log.info("误判总数量:{}", list.size());}}
Redis缓存击穿是指在Redis缓存系统中,由于某些原因,缓存的数据无法被正常访问或处理,导致缓存失去了它的作用。
1、什么情况会发生缓存击穿?
根本原因:热点Key失效。
(1)数据量过大
当缓存中存储的数据量过大时,缓存的数据量可能会超过Redis的数据存储限制,从而导致缓存失去了它的作用。
(2)数据更新频繁

当缓存中存储的数据更新频繁时,缓存的数据可能会出现异步的变化,导致缓存无法被正常访问。
(3)数据过期
当缓存中存储的数据过期时,缓存的数据可能会失去它的作用,因为Redis会在一定时间后自动将过期的数据删除。
(4)数据权限限制
当缓存中存储的数据受到权限限制时,只有拥有足够权限的用户才能访问和处理这些数据,从而导致缓存失去了它的作用。
(5)Redis性能瓶颈
当Redis服务器的性能达到极限时,Redis缓存可能会因为响应过慢而导致击穿。
(1)设置合理的缓存大小
根据实际需求设置合理的缓存大小,以避免缓存穿透。
(2)优化数据结构
根据实际需求优化数据结构,以减少数据的大小和更新频率。
(3)设置合理的过期时间
设置合理的过期时间,以避免缓存失去它的作用。
(4)增加Redis的并发处理能力
通过增加Redis的并发处理能力,以提高缓存的处理能力和响应速度。
(5)优化Redis服务器的硬件和软件配置
通过优化Redis服务器的硬件和软件配置,以提高Redis的性能和处理能力。
通过双检加锁机制。
先更新从缓存B,再更新主缓存A,而且让从缓存B的缓存失效时间长于A,保证A失效时,B还在。
假如没有电脑的文章
时光推进100年,一个世纪以后,电脑终极发展,人类穷尽想象,人人都能用上最为先进的电脑,这个二百多年前发现的玩意会如此影响我们的生活。 有了电脑,多好!终极电脑之断想——就只剩三个按键了 ●没有显示器,只要把开关一开,电脑会通过光线给你制作一个现成的显示器。 它分辨率极高,而且响应时间超快!在墙上,在草地,在水中,甚至在空气中。 ●不会在安静的夜里,在昏黄的蜡烛或者灯下,静静地去读一本拿在手里的书。 ●一百年后的电脑几乎所有的输入方式都可以靠语音和意念来替代键盘,但是一百年后的电脑,还是有可能会挂掉,所以(CTEL+ALT+DEL)这三个按键还是要留着…… ●有小学生在作文中如此写道: 1、50年后的电脑可以放在铅笔盒里,在铅笔盒的下层可以放铅笔之类的东西,至于上层,就是键盘,盒盖就是屏幕,鼠标就插在铅笔盒旁边。 2、你在网上购买了一件衣服,多媒体电脑会把衣服传过来;多媒体电脑还是一位医术高明的医生,有病对它说,马上就能恢复身体健康;多媒体电脑是一位高级教师,让它帮你辅导,你的学习成绩一定稳步上升;多媒体电脑还是一位厨师,只要输入原料,就能做出色香味俱全的美味佳肴。 像我这样的编辑,每天往电脑前一坐,就是十几个小时,坐得我腰疼,怀疑是不是得了腰椎间盘突出。 看个电影还好点,要是看篇论文、诗歌什么的,会看得头晕眼花、烦闷欲吐。 这破玩意还放着辐射。 我都担心白细胞就快降到最低值了。 是谁发明的破电脑?没电脑多好!无电脑之断想—看不到芙蓉姐姐了 ●假如没有电脑,我上班就不用噼里啪啦的去敲键盘了,也不用费劲的思考一个字是平舌还是翘舌,前鼻音还是后鼻音了。 想和谁联系的时候,就动手写信,顺便练练书法,(我现在的手写字已经不卒忍读了)还能给邮政局创点收入,你看邮政自从和电信分了家,效益是江河日下啊。 现在,QQ和邮件霸王了我,都让我忘了怎么拿笔了,一写字就像鸡爪子似的,可怜我小学时练了半年的毛笔字功底全军覆没。 几千年的书法文化竟然败给几十年的键盘文化,小编心有不甘啊。 ●假如没有电脑,我去银行存钱取钱再也不用按那6位数的密码了,省得还提心吊胆的怕别人看见。 到时候拿出钱来往柜台上一砸,说:“存块,给大爷记上。 ”然后就可以悠哉悠哉的看着出纳员抱着一摞子账簿记账。 ●假如没有电脑,发射火箭就不用现在这么麻烦了。 到时候先找几个人把火箭抬起来,然后再来个人用打火机点着火,接着总指挥喊:“一、二、三,发射!”那几个人就把火箭扔出去了。 多简单,就三步。 比现在又得检查这个设备又得检查那个程序的省事多了。 ●假如没有电脑,我们就不会看到那么多愤慨的事,也不会看到芙蓉姐姐那些恶心的图片
我的手机现在在电脑上下载东西为什么在电脑上会出现新硬盘安装有问题?原来的时候没有过这样的问题啊?是手机的问题还是电脑的问题啊?
正常的。 电脑把你的手级认为是一个硬盘。 没关系的。
相声出谋划策的台词 请各位好友相告 特急的
《出谋划策》 ()里的是动作 刘颖:与你上台说相声,不是穿堂装就是穿大褂, 张浩楠:哦, 刘颖:大家都看烦了, 张浩楠:对, 刘颖:你穿这么一个衣服啊 张浩楠:恩 刘颖:显得多时尚,观众认为你要演新节目才给你鼓掌呢 张浩楠:那到是那到是 刘颖:今今天你演什么 张浩楠:传统相声 刘颖:啥,什么呀? 张浩楠:猜谜语呀 刘颖:嗨,这节目别演了 张浩楠:怎么了? 刘颖:大家老听听腻了,这猜谜语就是你站台上说一谜底,观众底下……你你说谜面 张浩楠:嗷 刘颖:观众底下说谜底 张浩楠:嗷 刘颖:是不是,最后谁都知道啊,你台上说1段观众知道60段呢 张浩楠:这不是拼数量 刘颖:那是什么呀? 张浩楠:我们这里有技巧 刘颖:现在谁还讲技巧,都讲内容 张浩楠:那你知道我说什么内容吗? 刘颖:你什么内容啊? 张浩楠:听着 刘颖:来 张浩楠:远看是条狗,近看是条狗,打它也不走,骂它也不走,一拉就走 刘颖:死狗 张浩楠:哎?你怎么知道? 刘颖:不是我知道,各位都知道啊,你这都听腻了 张浩楠:那我给你换一个 刘颖:换什么呀? 张浩楠:说远瞧灯笼大 刘颖:近瞧大灯笼,灯笼是灯笼,上面竟窟窿,破灯笼。 张浩楠:这 刘颖:远瞧是电扇,近瞧是电扇,电扇是电扇,就是它不转,要不是没电,要不是破电扇,你这太简单了,你说点新的 张浩楠:你说 刘颖:我说点新的 张浩楠:你说你说 刘颖:注意听啊 张浩楠:恩 刘颖:说远瞧大胖子, 张浩楠:恩? 刘颖:近瞧大胖子,胖子是胖子,躺在马路上 张浩楠:这是? 刘颖:哼,死胖子,你看你看,他们鼓掌了吧 张浩楠:你把我当什么了? 刘颖:你得有新意,你得创新一点是不是,要不观众不爱看,这节目都听腻了 张浩楠:那那我给你换 刘颖:你换一个你换一个 张浩楠:我换对春联 刘颖:这听腻了 张浩楠:报菜名 刘颖:腻了 张浩楠:反正话 刘颖:腻了 张浩楠:绕口令 刘颖:腻了 张浩楠:你活着 刘颖:腻了 张浩楠:我看你就活腻了 刘颖:怎么说话呢 张浩楠:本来就是,我说一个你就说腻了,照您这意思这个猜谜语这节目没法演啦? 刘颖:演是可以演,我得给你出点主意,由我来给你出谋划策,嘿,这个节目焕然一新,观众记住了,你火了 张浩楠:是吗? 刘颖:哎对呀 张浩楠:恩 刘颖:比如说刚才你说这个你是一条死狗 张浩楠:对,哎?谁是呀? 刘颖:不是你就是一条死狗啊 张浩楠:我说的猜谜语这死狗 刘颖:对,这谜语的死狗 张浩楠:啊 刘颖:你换一种形式表现出来嘛,你不要站着两个人按那个说相声的形式,你给它换一种舞台的表演形式 张浩楠:嗷 刘颖:想一想还有什么舞台表演形式 张浩楠:照你这意思咱们换话剧朗诵 刘颖:哎? 张浩楠:然后用话剧来说这段 刘颖:哎,不错,这段用话剧朗诵形式表现出来,那就观众爱看哪 张浩楠:可这说怎么说呀这个? 刘颖:话话剧朗诵首先他讲腔调,你会吗? 张浩楠:这我知道 刘颖:啊 张浩楠:听着,这么说,您,是话剧工作者? 齐:哈哈哈哈哈哈哈哈哈哈 刘颖:听出来了 张浩楠:就这么说出来呀? 刘颖:多好,多好,用这个形式表现这段相声 张浩楠:啊 刘颖:特别有意思 张浩楠:这能行吗? 刘颖:来来来试试 张浩楠:啊 刘颖:你说一句我说一句啊 张浩楠:啊啊啊啊 刘颖:来来来, 张浩楠:啊 刘颖:开始啊 张浩楠:恩 刘颖:酝酿感情 张浩楠:哎,你到说话呀 刘颖:我不这酝酿感情着吗? 张浩楠:你再酝酿观众睡着了 刘颖:嗷,是是是,远看——是条——狗 张浩楠:近看,它也——是条狗 刘颖:打它也不走 张浩楠:骂它也不走 刘颖:一拉就走 张浩楠:原来是—— 齐:哈哈哈哈,死狗。 刘颖:你你你看,你看,鼓掌了吧,他们爱看 张浩楠:是是,是爱看 刘颖:啊 张浩楠:啊?您听听,您这还有包分吗?那叫相声,相声里面有包分, 刘颖:嗷,对对对,把这忘了啊还得有包分 张浩楠:不新鲜,再说了,你这舞台相声也太严肃了,你这么说你还不如呻港台鲜呢!这港台 刘颖:唉? 张浩楠:鲜都 刘颖:唉唉! 张浩楠:对不对 刘颖:唉唉!港台鲜,用港台鲜!我们会说话要做这个样子,有没有这个样子讲相声,那才是蛮好玩的 张浩楠:啊蛮好玩蛮好玩的了 刘颖:好不好 张浩楠:是是是 刘颖:啊,大家安静一下啦 张浩楠:啊啊啊啊 刘颖:不要糟相啦不要糟相啦 张浩楠:嗷 刘颖:接下来我们要给您搞一搞近猜 张浩楠:搞近猜是什么意思呢 刘颖:近猜就是猜一段谜语啦 张浩楠:嗷 刘颖:就是我说一个谜面,你们来猜谜底,首先我来搞 张浩楠:啊 刘颖:注意听啊 张浩楠:啊,你搞搞 刘颖:说远瞧是条狗狗, 张浩楠:狗狗 刘颖:近瞧是一条狗狗 张浩楠:呃 刘颖:打它也不走咧,骂它也不走,一拉就走,这个事好奇怪好奇怪的 张浩楠:那是为什么咧 刘颖:原来它是一条死狗狗,哎呀我猜到啦,哇噻耶!您听听 张浩楠:这什么玩意 刘颖:欣引啊 张浩楠:欣引是欣引啦,相声讲究口齿清楚,就您这口齿还说相声呢,要这么说还不如唱呢,唱都比你说这清楚 刘颖:嗷,唱唱唱唱,听你的,唱 张浩楠:还是刚才那词? 刘颖:来来来来,合作,合作一下啊,注意啦,开始啦,哟哟,康忙被被告,有一个谜语它难以琢磨,哟哟,远处一看,它是一条狗 张浩楠:近处一看,也是一条狗,打它也不走,骂它也不走,一拉它就走,原来 刘颖:哟哟 张浩楠:是死狗 刘颖:康忙被被告 张浩楠:什么,什么乱七八糟的 刘颖:多多多好啊,多好 张浩楠:把,把这歌都遭下了,再说了你这个相声当中加唱这个形势已经过时了 刘颖:就是 张浩楠:不流行了 刘颖:不流行了 张浩楠:不流行了 刘颖:嗷 张浩楠:你换 刘颖:那什么现在形式观众喜欢流行 张浩楠:魔术 刘颖:加进来 张浩楠:猜谜语里加魔术? 刘颖:你那多好啊,不单要是加魔术,而且还得加杂技 张浩楠:杂技? 刘颖:魔术杂技不分家啊 张浩楠:这倒是 刘颖:过去那个杂技演员演咱们那个名族传统杂技 张浩楠:啊 刘颖:他上舞台的那个感觉,啊,挺胸叠肚,嗷,亮相,会吗? 张浩楠:这我有印象 刘颖:加进来,一起来,咱么俩给大家表演这段魔术杂技相声猜谜语,你从那边上台,我从这边上台,来。 (上台亮相) 张浩楠:(上台亮相)啊 刘颖:(拍拍张浩南,指着左上角)汪汪汪汪 张浩楠:(拍拍刘颖,指着地上)呃呃呃呃呃 刘颖:(挥挥手,收受装着拿棍子打的样子,拍手)嗷 张浩楠:(双手叉腰,装着骂的样子,拍手)嗷 刘颖:(站在张浩楠的后面) 张浩楠:(左看看右看看,拍手,蹲在地下) 刘颖:(把上面写着死狗的两个字的布拉开) 齐:啊 刘颖:你看你看你看,你看,是不是,鼓掌了吧,这魔术啪一拉,哗,呵,观众一看,唉这好,不 张浩楠:这上面写的什么 刘颖:这比说话啊 张浩楠:啊? 刘颖:死狗啊 张浩楠:我站底下,你上头弄这么一个 刘颖:观众笑最重要,你管那个呢,是不是 张浩楠:是好,这演剧演的不错 刘颖:什,什么什么演剧,这是相声 张浩楠:相声,你有语言吗就是相声,啊? 刘颖:呃 张浩楠:我看你这是吃饱了撑的胡编乱造,知道吗 刘颖:你你别急呀 张浩楠:相声的特点 刘颖:你冷静点冷静点冷静点,别急别急别急,我刚给你出了些主意你不满意? 张浩楠:满意不了 刘颖:没关系,接下来我使使劲 张浩楠:你要干吗 刘颖:不是,我再给你出点馊主意 张浩楠:啊? 刘颖:不是不是,我再给你出点好主意,这回呢我给你策划一个,这段 张浩楠:啊 刘颖:死狗这段啊,及音乐,舞蹈,魔术,说唱,唯一一体,全方位包装的,这么一个新的猜谜语,大家爱看,你火了 张浩楠:又那老歌唱 刘颖:老歌你分谁的老歌啊 张浩楠:谁啊 刘颖:在么找一个国际巨星的老歌 张浩楠:谁 刘颖:杰克逊 张浩楠:杰克逊 刘颖:唉,你把杰克逊请上来,站这,跟你说一段猜谜语,你说你会怎么着 张浩楠:我火了呀 刘颖:还是啊,你把他请来呀,是不是,把他请来呀,把他把他请来呀,怎么样 张浩楠:行 刘颖:咱咱来一段 张浩楠:好好 刘颖:你会跳舞吗 张浩楠:我倒是会两下霹雳 刘颖:那你跳两下我看看 张浩楠:(扭两下) 刘颖:你挺胖,到还有点意思啊,好好,够了够了 张浩楠:这就够啦 刘颖:够啦,记住啊,待会我怎么跳,你怎么跳 张浩楠:哦 刘颖:我怎么唱,你怎么唱,配合我 张浩楠:昂 刘颖:好不好,道具给我们点道具,唉,帽子,好,哎呀 张浩楠:怎么还有帽子呀 刘颖:杰克逊哪, 张浩楠:嗷 刘颖:你不戴,你戴上帽子你就是杰克逊,杰克逊,往上一戴,杰克逊,不带帽子你哪像杰克逊哪,是不是啊 张浩楠:嗷嗷嗷 刘颖:你跟着杰克逊唱嘛 张浩楠:呃 刘颖:好吧,开始啊 张浩楠:嗯 刘颖:影像师,我们需要点音乐,谬贼可 张浩楠:就怕听这句 刘颖:说远处看那它是一条狗,近处看它也是一条狗 张浩楠:打它也不走,骂它也不走,原来是死狗,一条死狗,为什么它会是一条死狗 刘颖:你听我给你说说轻重的理由,你不用再讲究,其实没有什么缘由,都没有,其实正的是没有 张浩楠:没有 刘颖:不管它是悲伤小狗 张浩楠:或是瘦了没有 齐:或是肥的流油 齐:怎么打它不走,骂它也是不走,就是死狗。 一条死狗 张浩楠:什么玩意呀?
发表评论