课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存穿透问题是目前大多数软件编程开发程序员在工作中会经常遇到的一个编程问题,而本文我们就通过案例分析来简单了解一下,缓存穿透都有哪些解决方法。
一、问题描述:
针对DB中不存在的数据源,每次请求缓存和数据库都不存在
二、造成后果:
应用服务器压力变大
Redis命中率大幅度降低
`数据库压力巨增甚至down掉`
该现象对于Redis无影响,奔溃的是数据库
三、造成原因:
频繁访问不存在数据
四、解决方案:
1.空值缓存:查询数据库返回为null时也进行缓存,但一定设置很短的过期时间
2.实时监控:对Redis命中率进行实时监控,当发现命中率极速降低时,人为排查访问对象和访问数据,和运维人员配合,可以设置黑名单限制服务
3.设置访问白名单:使用bitmaps类型定义一个可以访问的名单,名单id作为bitmaps的偏移量,每次访问和bitmap里面的id进行比较,如果访问id不在bitmaps里面,进行拦截,不允许访问。
4.布隆过滤器:它实际上是一个很长的二进制向量(位图)和一系列随机映射函数(哈希函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。