解決方法是:1、快取穿透,可以把空的資料也快取起來和使用布隆過濾器;2、快取雪崩,可以設定對應熱點key永不過期,多重快取結合,採購第三方Redis,以及過期時間錯開,過期時間使用隨機產生即可。
本教學操作環境:windows7系統、Redis5.0.10版、DELL G3電腦。
Redis快取穿透以及解決方法
一、快取穿透
1.當使用者查詢的key在redis中不存在,對應的id在資料庫也不存在,此時被非法使用者進行攻擊,大量的請求會直接打在db上,造成宕機,進而影響整個系統,這種現象稱之為快取穿透。
2.解決方案一:把空的資料也快取起來,例如空字串,空對象,空數組或list,程式碼如下
if (list != null && list.size() > 0) { redisOperator.set("subCat:" + rootCatId, JsonUtils.objectToJson(list)); } else { redisOperator.set("subCat:" + rootCatId, JsonUtils.objectToJson(list), 5*60); }
3.解決方案二:布隆過濾器
布隆過濾器:判斷一個元素是否在一個數組裡面,如下圖,利用二進制去做的一個存儲,佔用內存比較小,0 代表不存在,1 代表存在,添加查詢效率很快,當保存了一個數值會經過一個演算法將對應的值保存到布隆過濾器的集合上的某個位置,某個位置上可能會存在多個key,當傳進來一個不存在的key值,和集合進行匹配,如果匹配不上便會返回一個null
缺點:1、1%的誤判率,當有一個key不存在布隆數組中,但是由於這個誤判率,在某個情況下回判斷這個key存在,當這個數組越長誤判率越低,數組越短誤判率越高
2、當我們要刪除某個key值的時候,是會刪除我們的資料庫和redis中的內容,但是在布隆數組中無法刪除,因為數組的某個位置上會存在對個key如果我們要刪除的話就是將1變成0,但是會將其中所有的key值都刪除
3.程式碼複雜度也會增加,因為我們要額外去維護一個集合,當我們使用redis集群,布隆過濾器要和redis結合在一起使用
二、Redis快取雪崩
1.快取雪崩:快取中的資料大批量失效,然後這個使用又要大量的請求進來,但是由於redis中的key全部失效了所有會全部請求到db上,造成宕機
2.解決方案
設定對應熱點key永不過期
過期時間錯開,過期時間使用隨機生成,熱點資料的過期時間設定的長一點,非熱點資料可以設定短一點
- ##多快取結合,例如:請求進入,可以現請求redis,當redis中不存在的時候再去請求memcache,如果都沒有再去請求db
- 購買第三方Redis(阿里雲或騰訊雲上的redis)
以上是redis雪崩和穿透的解決方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中