Redis其它
redis密碼設置:redis.conf中配置?requirepass foobared
bind:白名單,允許哪個ip訪問
redis緩存更新:
1.先刪除緩存,再更新數據庫
(在沒有更新數據庫之前,但是緩存已刪除,查詢會直接查數據庫會產生臟數據)
2.先更新數據庫,更新成功后再讓緩存失效
(低概率產生臟數據)
3.更新數據的時候只更新緩存不更新數據庫,然后同步異步去批量更新數據庫
(性能提高,數據的IO走緩存不走數據庫,直接操作內存,但是數據也不是強一致)
緩存穿透:
條件:是指查詢一個數據庫一定不存在的數據。
正常的使用緩存流程大致是,數據查詢先進行緩存查詢,如果key不存在或者key已經過期,再對數據庫進行查詢,并把查詢到的對象,放進緩存。
如果數據庫查詢對象為空,則不放進緩存。
場景:如果查詢一定不存在的對象。就會每次都去查詢數據庫,而每次查詢都是空,每次又都不會進行緩存。假如有惡意攻擊,就可以利用這個漏洞,對數據庫造成壓力,甚至壓垮數據庫。
1.將這個緩存以及數據庫中都查不到的key值設置null值存入到緩存中,這樣之后這個key請求,能在緩存中拿到null值
2.布隆過濾器:在緩存之前加上一層BloomFilter,在查詢的時候先去BloomFilter去查key是否存在,不存在直接返回,存在再走---->緩存----->DB。
緩存擊穿(緩存雪崩):
場景:緩存同時失效,所有請求打到DB上,數據庫壓力過大宕機
1.多線程之間使用互斥鎖(用redis提供的setnx提供一個鎖(其它方式也行),讓其它請求排隊,只讓一個請求打到DB,拿到數據設置緩存,后面請求繼續走緩存)
?
轉載于:https://www.cnblogs.com/LJing21/p/10616701.html
總結
- 上一篇: AMD 锐龙 8000“Strix Po
- 下一篇: 美股周三:三大股指全线上线,苹果股价再创