LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Redis入門必須了解哪些知識

admin
2025年8月14日 23:18 本文熱度 577

Redis是一種開源的基于BSD許可的內存數據庫,可用作數據庫、緩存、消息代理等,是NoSQL型數據庫

Redis的特點

  1. Redis是基于內存的,操作速度非常快

  2. Redis是單進程單線程的,線程安全,采用IO多路復用機制

  3. Redis支持豐富的數據類型,字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(sorted set)等

  4. Redis所有操作都是原子性的,要么全部成功,要么全部失敗

Redis為什么這么快?

redis速度非常快,可達到每秒十萬級的吞吐量,這基于以下幾點原因

  1. redis是基于內存實現的,內存的讀寫速度要遠高于硬盤的讀寫速度

  2. redis主體是單線程的,沒有鎖的問題。說明:redis整體不是單線程的,處理請求時是單線程執行

  3. 特殊的數據結構,redis中字符串用的是SDS動態字符串

    SDS與C的字符串:

    1. C中字符串未記錄字符串長度,查詢字符串長度時需要遍歷整個字符串,時間復雜度為O(n),并且在擴充和縮短字符串時,要注意緩沖區溢出和內存泄漏問題

    2. SDS字符串的len存儲了字符串長度信息,查詢字符串長度時間復雜度為O(1),在擴充字符串時會先檢查空間是否滿足需求空間,如果不滿足,則會先對SDS空間進行擴展,避免了緩沖區溢出

    3. SDS字符串減少了內存分配次數,在擴充字符串時會執行空間預分配(空間分配策略),在修改后字符串長度時,不僅分配了必須的空間,還會分配一定大小的free未使用空間(修改后長度小于1MB,則和字符串長度相等,反之,最大為1MB);在縮短字符串時,采用了惰性空間釋放,即修改字符串長度后,不會立即釋放空間,而是將空間分配到free未使用空間中,以便于下次使用

    4. SDS字符串是二進制安全的,因為buf存儲的不是字符,存儲的是二進制數據

  4. I/O多路復用

    Redis服務器是一個事件驅動程序,包含了文件事件和時間事件。文件事件就是redis服務器和其他端進行通信時產生的相應的文件;時間事件是redis內部的一些在給定時間內要進行的操作

    文件事件處理器是單線程執行的,但內部實現了I/O多路復用,即內部通過監聽同時監聽多個Socket連接,快速響應連接請求,但在內部I/O多路復用程序會將Socket放在一個有序的隊列中,通過文件事件分派器有序分配給事件處理器進行處理,一個Socket的事件執行完畢后,才會執行下一個Socket,即是單線程。但這里也要注意事件處理器里并不是單線程的

Redis數據的更新、過期可采用的策略是什么?

  1. 數據更新策略(redis緩存與DB數據保證一致性)

    Cache-Aside pattern 緩存更新模式

在查詢時,首先去查詢緩存,如果命中了緩存,就取出返回數據。如果沒有命中緩存,則去數據庫進行查詢,并保存在redis緩存中,這樣保證了緩存的數據會進行更新;對數據進行更新的時候,先進行DB數據的更新,再刪除緩存,這樣避免了舊數據緩存一直存在(查詢時一直命中舊數據緩存)

  1. 數據過期策略

    1. 定期刪除 優點:節約了內存 缺點:cpu壓力大

      redis會間隔一段時間(默認100ms)去隨機抽取一些設置了過期時間的緩存,檢查其是否過期。隨機抽取的原因是,如果按照一定數量去順序查詢時,后面的過期緩存可能長時間不能被清理,若每次都是全量的檢查時,數據量大,cpu壓力。

    2. 惰性刪除 優點:cpu壓力小 缺點:內存壓力大

      redis不進行主動的刪除,當查詢數據時,若該數據沒有過期,則返回數據,反之,則刪除數據,避免了cpu壓力大的情況,但是若過期數據長期未被查詢,則一直存留,增加了內存的壓力

Redis的淘汰機制有哪些?

在數據過期策略中提到惰性刪除時,可能會有數據長時間未被刪除,再加上未過期數據,那么就可能達到內存限制的上限,此時需要進行數據淘汰

  1. 新寫入數據時報錯(默認策略)

  2. 在鍵空間中,隨機移除某個key

  3. 在鍵空間中,移除最近很少使用的key(LRU算法推薦)

Redis持久化有哪些方式?

  1. RDB

    快照形式,定時在redis需要做持久化時,redis會開啟子進程,將redis中的數據寫入dump.rdb文件中保存在硬盤

    優點:RDB存儲效率高,文件體積小,恢復時速度快于AOF

    缺點:定時執行,未保存數據,redis就重啟了,不能保證數據完整性

  2. AOF

    默認每秒鐘一次,將redis的修改命令全部保存在一個AOF文件中,每當redis服務器做一次修改命令,都將該命令保存下來,從而達到持久化

    優點:數據足夠完整,即便丟失也僅丟失了一秒的數據

    缺點:相對于RDB文件,恢復數據速度慢,文件體積大

    從優缺點中可以看出當你的程序需要高度保證數據的完整性時還是采用AOF方式更加可靠

Redis緩存雪崩、穿透、擊穿的原因和解決方案有哪些?

緩存雪崩:

原因:存在緩存設置了過期時間且大量緩存在短時間段內過期的情況

解決方案:

  1. 設置永久不過期(不推薦)

  2. 在可接受的范圍內,隨機設置過期時間

緩存穿透:

原因:

  1. 緩存大面積無法命中

  2. 接口被攻擊,非常規查詢,如:查詢id<0,使得緩存無法命中

解決方案:

  1. 布隆過濾器

  2. 做一些通用的簡單校驗,例如:查詢時,若id<=0,則不進行查詢

  3. 緩存一條全空數據,過期時間要盡可能小一點,效果可能不太理想

緩存擊穿:

原因:大量的請求命中相同一個key,在此key失效時,對應的請求全部落到數據庫上

解決方案:

  1. 加鎖,排隊進行請求,若key不存在(不論是過期還是首次查詢無緩存),則進行一次DB查詢,然后將數據緩存進redis

  2. 設置永久不過期(不推薦)


閱讀原文:原文鏈接


該文章在 2025/8/15 12:08:56 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
香蕉网色老视频在线观看 | 老鸭窝AV在线永久免费观看 | 亚洲中文AⅤ中文字幕 | 天天躁夜夜躁狠狠久久 | 久久伊人精品波多野结衣 | 日本一本亚洲最大 |