柚子快報邀請碼778899分享:緩存 數(shù)據(jù)庫 關于Redis
柚子快報邀請碼778899分享:緩存 數(shù)據(jù)庫 關于Redis
1、Redis 是用 C 語言寫的,開源的高性能key-value非關系緩存數(shù)據(jù)庫 2、支持存儲類型string(字符串)、list(鏈表)、set(集合)、zset(有序集合)和 hash(哈希類型) 3、Redis 是單進程單線程的, redis 利用隊列技術將并發(fā)訪問變?yōu)榇性L問, 消除了傳統(tǒng)數(shù)據(jù)庫串行控制的開銷 3、使用 Redis 有哪些好處? (1) 速度快,因為數(shù)據(jù)存在內存中,類似于HashMap,HashMap的優(yōu)勢就是查找和操作的時間復雜度都很低 (2)支持豐富數(shù)據(jù)類型,支持string,list,set,sorted set,hash (3) 支持事務,操作都是原子性,所謂的原子性就是對數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行 4、Redis 的持久化機制是什么?各自的優(yōu)缺點? Redis 提供兩種持久化機制 RDB(默認) 和 AOF 機制:
5、緩存穿透及解決方案 定義 :客戶端請求的數(shù)據(jù)不僅在緩存沒有查到,而且數(shù)據(jù)庫中也沒有;導致每次的請求的數(shù)據(jù)都能打到數(shù)據(jù)庫中去,進行的無效的查詢,不僅穿過了redis層也穿mysql層 場景 :惡意的請求數(shù)據(jù)、根本就不存在的值uuid,(-1,woshilaji)惡意值等 方案: 1. 把惡意的數(shù)據(jù)用另一個redis存儲起來,當請求在redis未命中時可以再查詢下無緩存數(shù)據(jù)的key值,假如數(shù)據(jù)庫中有新值增加,可能會帶來判斷誤差, 可以把惡意數(shù)據(jù)的key值設置的時間稍微短一些,根據(jù)實際的場景應用情況合理的設置緩存的失效時間 ? ? ? ? ? ?2. 布隆過濾器 緩存擊穿及解決方案 定義 :緩存擊穿是指緩存中沒有但數(shù)據(jù)庫中有的數(shù)據(jù)(一般是值一個熱點key緩存時間到期),這時由于并發(fā)用戶特別多,同時讀緩存沒有數(shù)據(jù),接著去數(shù)據(jù)庫去取數(shù)據(jù),引起數(shù)據(jù)庫壓力瞬間增大,造成過大壓力 場景 :當一個key失效時,同時有大量并發(fā)請求到數(shù)據(jù)庫,造成還沒來得及緩存數(shù)據(jù),都去數(shù)據(jù)庫中查詢數(shù)據(jù)了 方案:高并發(fā)的key時設置一個永不過期的key 使用redis的互斥鎖,注意增加鎖的默認失效時防止釋放鎖失敗導致不能重置key值 接口限流 與熔斷 ,降級 。重要的接口一定要做好限流策略,防止用戶惡意刷接口,同時要降級準備,當接口中的某些 服務 不可用時候,進行熔斷, 失敗快速返回機制。 緩存雪崩及解決方案 定義 :緩存雪崩是指緩存中數(shù)據(jù)大批量到過期時間,而查詢數(shù)據(jù)量巨大,引起數(shù)據(jù)庫壓力過大,和緩存擊穿不同的是, 緩存擊穿是同一個key, ? ? ? ? ? ?緩存雪崩不同key同時過期,很多數(shù)據(jù)都查不到從而查數(shù)據(jù)庫。 場景 :網(wǎng)頁首頁的基本數(shù)據(jù)信息,同一時間設置緩存,幾乎同一時間失效。 方案:可以把緩存數(shù)據(jù)的有效期進行隨機化,防止出現(xiàn)同一時間大量數(shù)據(jù)過期現(xiàn)象發(fā)生。 ? ? ? ? ?把一些數(shù)據(jù)可以設置永久不過期,當有改動時主動刪除并且設置緩存數(shù)據(jù) 1、為什么要將服務注冊到nacos? 為了更好的查找這些服務。 (Eureka、Zookeeper) 2、Nacos服務是如何判定服務實例的狀態(tài)? 通過發(fā)送心跳包,5秒發(fā)送一次,如果15秒沒有回應,則說明服務出現(xiàn)了問題, 如果30秒后沒有回應,則說明服務已經(jīng)停止。
?
柚子快報邀請碼778899分享:緩存 數(shù)據(jù)庫 關于Redis
精彩文章
本文內容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。