亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Redis入門必須了解哪些知識(shí)

admin
2025年8月10日 22:0 本文熱度 1280

Redis是一種開源的基于BSD許可的內(nèi)存數(shù)據(jù)庫(kù),可用作數(shù)據(jù)庫(kù)、緩存、消息代理等,是NoSQL型數(shù)據(jù)庫(kù)

Redis的特點(diǎn)

  1. Redis是基于內(nèi)存的,操作速度非???/span>

  2. Redis是單進(jìn)程單線程的,線程安全,采用IO多路復(fù)用機(jī)制

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

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

Redis為什么這么快?

redis速度非??欤蛇_(dá)到每秒十萬級(jí)的吞吐量,這基于以下幾點(diǎn)原因

  1. redis是基于內(nèi)存實(shí)現(xiàn)的,內(nèi)存的讀寫速度要遠(yuǎn)高于硬盤的讀寫速度

  2. redis主體是單線程的,沒有鎖的問題。說明:redis整體不是單線程的,處理請(qǐng)求時(shí)是單線程執(zhí)行

  3. 特殊的數(shù)據(jù)結(jié)構(gòu),redis中字符串用的是SDS動(dòng)態(tài)字符串

    SDS與C的字符串:


    1. C中字符串未記錄字符串長(zhǎng)度,查詢字符串長(zhǎng)度時(shí)需要遍歷整個(gè)字符串,時(shí)間復(fù)雜度為O(n),并且在擴(kuò)充和縮短字符串時(shí),要注意緩沖區(qū)溢出和內(nèi)存泄漏問題

    2. SDS字符串的len存儲(chǔ)了字符串長(zhǎng)度信息,查詢字符串長(zhǎng)度時(shí)間復(fù)雜度為O(1),在擴(kuò)充字符串時(shí)會(huì)先檢查空間是否滿足需求空間,如果不滿足,則會(huì)先對(duì)SDS空間進(jìn)行擴(kuò)展,避免了緩沖區(qū)溢出

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

    4. SDS字符串是二進(jìn)制安全的,因?yàn)閎uf存儲(chǔ)的不是字符,存儲(chǔ)的是二進(jìn)制數(shù)據(jù)

  4. I/O多路復(fù)用

    Redis服務(wù)器是一個(gè)事件驅(qū)動(dòng)程序,包含了文件事件和時(shí)間事件。文件事件就是redis服務(wù)器和其他端進(jìn)行通信時(shí)產(chǎn)生的相應(yīng)的文件;時(shí)間事件是redis內(nèi)部的一些在給定時(shí)間內(nèi)要進(jìn)行的操作

    文件事件處理器是單線程執(zhí)行的,但內(nèi)部實(shí)現(xiàn)了I/O多路復(fù)用,即內(nèi)部通過監(jiān)聽同時(shí)監(jiān)聽多個(gè)Socket連接,快速響應(yīng)連接請(qǐng)求,但在內(nèi)部I/O多路復(fù)用程序會(huì)將Socket放在一個(gè)有序的隊(duì)列中,通過文件事件分派器有序分配給事件處理器進(jìn)行處理,一個(gè)Socket的事件執(zhí)行完畢后,才會(huì)執(zhí)行下一個(gè)Socket,即是單線程。但這里也要注意事件處理器里并不是單線程的

Redis數(shù)據(jù)的更新、過期可采用的策略是什么?

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

    Cache-Aside pattern 緩存更新模式


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

  1. 數(shù)據(jù)過期策略

    1. 定期刪除 優(yōu)點(diǎn):節(jié)約了內(nèi)存 缺點(diǎn):cpu壓力大

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

    2. 惰性刪除 優(yōu)點(diǎn):cpu壓力小 缺點(diǎn):內(nèi)存壓力大

      redis不進(jìn)行主動(dòng)的刪除,當(dāng)查詢數(shù)據(jù)時(shí),若該數(shù)據(jù)沒有過期,則返回?cái)?shù)據(jù),反之,則刪除數(shù)據(jù),避免了cpu壓力大的情況,但是若過期數(shù)據(jù)長(zhǎng)期未被查詢,則一直存留,增加了內(nèi)存的壓力

Redis的淘汰機(jī)制有哪些?

在數(shù)據(jù)過期策略中提到惰性刪除時(shí),可能會(huì)有數(shù)據(jù)長(zhǎng)時(shí)間未被刪除,再加上未過期數(shù)據(jù),那么就可能達(dá)到內(nèi)存限制的上限,此時(shí)需要進(jìn)行數(shù)據(jù)淘汰

  1. 新寫入數(shù)據(jù)時(shí)報(bào)錯(cuò)(默認(rèn)策略)

  2. 在鍵空間中,隨機(jī)移除某個(gè)key

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

Redis持久化有哪些方式?

  1. RDB

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

    優(yōu)點(diǎn):RDB存儲(chǔ)效率高,文件體積小,恢復(fù)時(shí)速度快于AOF

    缺點(diǎn):定時(shí)執(zhí)行,未保存數(shù)據(jù),redis就重啟了,不能保證數(shù)據(jù)完整性

  2. AOF

    默認(rèn)每秒鐘一次,將redis的修改命令全部保存在一個(gè)AOF文件中,每當(dāng)redis服務(wù)器做一次修改命令,都將該命令保存下來,從而達(dá)到持久化

    優(yōu)點(diǎn):數(shù)據(jù)足夠完整,即便丟失也僅丟失了一秒的數(shù)據(jù)

    缺點(diǎn):相對(duì)于RDB文件,恢復(fù)數(shù)據(jù)速度慢,文件體積大

    從優(yōu)缺點(diǎn)中可以看出當(dāng)你的程序需要高度保證數(shù)據(jù)的完整性時(shí)還是采用AOF方式更加可靠

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

緩存雪崩:

原因:存在緩存設(shè)置了過期時(shí)間且大量緩存在短時(shí)間段內(nèi)過期的情況

解決方案:

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

  2. 在可接受的范圍內(nèi),隨機(jī)設(shè)置過期時(shí)間

緩存穿透:

原因:

  1. 緩存大面積無法命中

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

解決方案:

  1. 布隆過濾器

  2. 做一些通用的簡(jiǎn)單校驗(yàn),例如:查詢時(shí),若id<=0,則不進(jìn)行查詢

  3. 緩存一條全空數(shù)據(jù),過期時(shí)間要盡可能小一點(diǎn),效果可能不太理想

緩存擊穿:

原因:大量的請(qǐng)求命中相同一個(gè)key,在此key失效時(shí),對(duì)應(yīng)的請(qǐng)求全部落到數(shù)據(jù)庫(kù)上

解決方案:

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

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


閱讀原文:原文鏈接


該文章在 2025/8/11 10:32:14 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved