日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么使用缓存、缓存穿透、热点数据处理、缓存雪崩解决方案 - 公开课笔记

發布時間:2024/2/28 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么使用缓存、缓存穿透、热点数据处理、缓存雪崩解决方案 - 公开课笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要內容

  • 怎么使用緩存
  • 什么是緩存穿透、解決方案?
  • 對于熱點數據的訪問怎么處理?
  • 怎么規避雪崩與雪崩解決方案

如何使用緩存?

緩存用來提高性能、保護數據庫

緩存穿透?

緩存穿透,指指查詢數據庫和緩存都沒有的數據
解決方案?
1、緩存空對象:代碼簡單、效果不好
2、布隆過濾器:代碼復雜、效果很好

緩存空對象

缺點:
1、同一個key不會多次查詢數據庫,但是如果換一個key,還是會去查詢數據庫
2、redis中會有大量的空數據,占用redis內存

布隆過濾器

布隆過濾器應用


輸出:

誤判的數量:10

布隆過濾器可以看做是一個特殊的集合對象,只有兩個方法:
1、put()方法
2、mightContain()方法
不能delete,不能get

布隆過濾器存在一定的fpp誤判概率,可以自己定義容錯率(必須大于0.0),容錯率越低,內存消耗越大。在上圖中可以看到,我們設定誤判的概率為0.001,size表示預計插入到集合中的數據量

布隆過濾器原理
底層是一個bit數組
初始化value全部為0
添加“太白”之后,下面3個黃色位置變為1

原理:(以3個哈希函數為例)
添加“太白”之后,用3個不同的哈希函數對“太白”進行哈希。哈希得到數字之后,再對數組長度取余數,得到3個對應的數組下標

因為底層只有一個bit數組,并不去保存數據,所以不能get數據。
因為同一個格子有可能會被多個數據占用,所以不能delete數據。

誤判示例:產生哈希沖突(下圖)

正確判斷示例

影響容錯率的因素:
數組長度、Hash函數的個數,兩者需要配合使用才能達到更好的效果,并不是越大越好

guava原理
用戶只需要定義預計插入量容錯率
例如,當我們設置預計插入量=1000000,容錯率fpp=0.1時,,使用算法:

計算出

redis
redis底層是使用位數組存儲key的



執行下面操作后,redis會自動擴容

自己手寫分布式的布隆過濾器

對于熱點數據的訪問
緩存擊穿(99個人同時訪問一個緩存沒有,但數據庫有的數據)
數據庫有數據,緩存沒有的情況:
1、這條數據沒有人訪問過
2、緩存剛好失效
解決方式:加鎖

緩存血崩
1、redis掛了
2、大部分緩存同時失效
規避方式:
redis搭建高可用集群(cluster)錯開數據過期時間
如果已經出現了雪崩:降級、熔斷

解決數據一致性問題


總結

以上是生活随笔為你收集整理的怎么使用缓存、缓存穿透、热点数据处理、缓存雪崩解决方案 - 公开课笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。