欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

del和unlink有啥區(qū)別?。繛槭裁碨tring類型刪除不會(huì)做異步刪除?

小林coding ? 來(lái)源:小林coding ? 2023-04-17 10:10 ? 次閱讀

問(wèn)題

del 和 unlink 有啥區(qū)別啊?為什么String類型刪除不會(huì)做異步刪除?

彬彬回答

b0ff4b80-dc1c-11ed-bfe3-dac502259ad0.jpg

DEL 和 UNLINK 都是同步的釋放 key 對(duì)象,區(qū)別是怎么釋放后面的 value 對(duì)象

DEL 每次都是同步釋放 value 部分,如果 value 很大,例如一個(gè) list 里很多元素,這會(huì)阻塞 Redis 工作線程。

為了規(guī)避這個(gè)問(wèn)題,4.0 里引出了 UNLINK 命令,可以異步釋放 value 對(duì)象,放到一個(gè)子線程中。

這邊需要引出一個(gè)釋放的閾值,見(jiàn)后面解釋。

目前默認(rèn)的閾值是 64,例如只有一個(gè) list 里面含有超過(guò) 64 個(gè)元素,才會(huì)異步釋放,否則也是會(huì)同步釋放不同的數(shù)據(jù)結(jié)構(gòu)的計(jì)算閾值的方式不一樣,不過(guò)大致遵循一個(gè)原則:就是要釋放多少塊內(nèi)存即在小對(duì)象上使用 UNLINK 效果等同于 DEL,也是同步釋放,區(qū)別就是要多走幾個(gè)函數(shù)調(diào)用,例如判斷 list 里需要判斷列表的長(zhǎng)度等

大 value 對(duì)象的釋放是異步的,放在一個(gè)子線程上,小對(duì)象之所以不異步釋放,是因?yàn)楫惒结尫牛骶€程和子線程之間需要做一些同步操作(這是有代價(jià)的),然后小對(duì)象釋放,本身也很快就也不值得進(jìn)行異步釋放,內(nèi)存釋放也更及時(shí)。

即可能異步釋放,實(shí)際上會(huì)比同步釋放更慢,所以作者設(shè)置了個(gè) 64 的經(jīng)驗(yàn)值

所以如果是一個(gè)小對(duì)象,DEL 和 UNLINK 其實(shí)一樣;如果是一個(gè)大對(duì)象,UNLINK 會(huì)更加好。

所以大部分情況下都可以用 UNLINK 代替 DEL,而 Redis 其實(shí)也有個(gè)配置項(xiàng),可以控制將 DEL 默認(rèn)轉(zhuǎn)換為 UNLINK(實(shí)現(xiàn)上都是同一個(gè)函數(shù),只是入口 async 參數(shù)不同)不過(guò)我們需要知道異步釋放的好處(不阻塞主線程)和它的壞處(需要進(jìn)行一些線程同步相關(guān)的操作,內(nèi)存釋放不及時(shí))。

至于說(shuō) string 為啥不異步釋放,主要是作者認(rèn)為它是一整塊內(nèi)存空間,計(jì)算閾值的時(shí)候 string 的結(jié)果固定是 1,那么就 <= 64,就是同步釋放。

在補(bǔ)充一點(diǎn),前面舉例是說(shuō)的 list,底層是用的 quicklist,嚴(yán)格來(lái)說(shuō)統(tǒng)計(jì)的是 quicklistNode 的節(jié)點(diǎn)數(shù)量,就不是列表元素?cái)?shù)量。

像 zset 那些如果用的 ziplist/listpack 編碼的話,這種計(jì)算出來(lái)的閾值是 1,就也不是元素?cái)?shù)量。如果是跳表編碼的話就是統(tǒng)計(jì)的元素?cái)?shù)量。

然后至于選擇的話,大部分情況可以無(wú)腦用 UNLINK,不過(guò)需要知道壞處。

例如對(duì)于每一次的 async delete,主線程給子線程提交任務(wù)時(shí)需要加鎖解鎖,bio 子線程消費(fèi)任務(wù)的時(shí)候也要加鎖解鎖,要做一些線程同步,還有線程上下文切換,這些都是可能會(huì)有的潛在的問(wèn)題,如果小元素都異步釋放的話,的確代價(jià)可能會(huì)大,多線程做事情的確是會(huì)有這些麻煩。

可以多做壓測(cè)來(lái)驗(yàn)證環(huán)境里到底哪個(gè)好,不過(guò)大部分情況這些我們不用關(guān)系,只要寫(xiě)代碼的時(shí)候有意識(shí)的注意大 key 的釋放就好。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Del
    Del
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    6531
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    379

    瀏覽量

    10966

原文標(biāo)題:Redis 刪除 key用 del 和 unlink 有啥區(qū)別?

文章出處:【微信號(hào):小林coding,微信公眾號(hào):小林coding】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux系統(tǒng)中unlink命令的使用

    在 Linux 中刪除文件,我們通常使用 rm 命令。除此以外,還有另外一個(gè)命令,可以用于刪除文件和鏈接,這就是 unlink 命令。雖然它聽(tīng)起來(lái)像是只能刪除 Linux 系統(tǒng)中的鏈接
    發(fā)表于 09-13 14:29 ?2191次閱讀

    ADS1294和ADS1298區(qū)別?

    您好,請(qǐng)教一下您這個(gè)ADS1294和ADS1298區(qū)別?還有帶R的和不帶R的
    發(fā)表于 12-25 06:31

    不會(huì)做Android的藍(lán)牙調(diào)試

    不會(huì)做Android的藍(lán)牙調(diào)試
    發(fā)表于 12-17 22:35

    請(qǐng)問(wèn)如何用f_unlink刪除一個(gè)文件夾?

    不知道怎么刪除掉這個(gè)文件夾查了一下,用f_unlink函數(shù)是沒(méi)錯(cuò)的但是試過(guò)以下的都不行:f_unlink("0:/PHOTO1");f_unlink("/PHOTO1");f_
    發(fā)表于 12-03 08:38

    為什么YouTask自己刪除自己不會(huì)顯示多次?

    這個(gè)程序是從mytask里面刪除youtask,想請(qǐng)問(wèn)一下大神,在youtask執(zhí)行完:if( OSTaskDelReq(OS_PRIO_SELF ) == OS_TASK_DEL
    發(fā)表于 08-15 02:13

    如何刪除網(wǎng)卡驅(qū)動(dòng)(徹底刪除)

    如何刪除網(wǎng)卡驅(qū)動(dòng) 刪除舊網(wǎng)卡信息 網(wǎng)卡換了個(gè)插槽,進(jìn)入系統(tǒng)時(shí),設(shè)備管理器中就多出了個(gè)網(wǎng)卡Realtek RTL8139 Family PCI Fast Et
    發(fā)表于 12-05 16:40 ?4.1w次閱讀

    刪除軟件的方法哪些?

    刪除軟件的方法哪些? 1、直接刪除發(fā)  綠色軟件(不用安裝就能夠直接使用的軟件),不會(huì)對(duì)系統(tǒng)配置進(jìn)行任何修改,對(duì)于這樣的
    發(fā)表于 02-23 15:24 ?1153次閱讀

    如何徹底刪除“我的文檔”

    如何徹底刪除“我的文檔”    在windows XP中,當(dāng)我們刪除“我的文檔”中的“我的音樂(lè)”、“圖片收藏”等文件夾后,重新啟
    發(fā)表于 02-24 11:50 ?1148次閱讀

    重要機(jī)密文檔該刪除還是粉碎?

      重要機(jī)密文檔,徹底刪除就絕對(duì)安全了嗎?我們安裝瑞星殺毒軟件后,通常會(huì)在鼠標(biāo)右鍵中出現(xiàn)一個(gè)“文件粉碎”的選項(xiàng),它跟我們平常的文件刪除什么區(qū)別呢?怎
    發(fā)表于 07-12 17:03 ?3331次閱讀
    重要機(jī)密文檔該<b class='flag-5'>刪除</b>還是粉碎?

    linux如何復(fù)原已經(jīng)刪除的文件

    Linux不像windows那么顯眼的回收站,不是簡(jiǎn)單的還原就可以了。linux刪除文件還原可以分為兩種情況,一種是刪除以后在進(jìn)程存在刪除信息,一種是
    的頭像 發(fā)表于 09-07 10:38 ?2971次閱讀

    拼多多被曝遠(yuǎn)程刪除用戶照片

    對(duì)于近日個(gè)別拼多多用戶反饋“vivo”手機(jī)提示拼多多App刪除照片的問(wèn)題,拼多多官方在今晚回應(yīng)稱,只是刪除緩存,拼多多絕不會(huì)刪除用戶主動(dòng)保存的任何照片和文件。
    的頭像 發(fā)表于 01-13 11:02 ?2670次閱讀

    刪除網(wǎng)絡(luò)失敗的問(wèn)題處理

    實(shí)例化終止時(shí),網(wǎng)元側(cè)經(jīng)常報(bào)刪除網(wǎng)絡(luò)失敗“delete_network_precommit failed”,在Provider界面檢查網(wǎng)絡(luò)的子網(wǎng)和端口,檢查結(jié)果為都已經(jīng)清除,但是手工刪除網(wǎng)絡(luò)同樣報(bào)錯(cuò),如下圖所示。
    的頭像 發(fā)表于 09-20 11:05 ?1039次閱讀
    <b class='flag-5'>刪除</b>網(wǎng)絡(luò)失敗的問(wèn)題處理

    Redis的刪除策略和內(nèi)存淘汰機(jī)制介紹

    Redis過(guò)期鍵的刪除策略? Redis的過(guò)期刪除策略就是:惰性刪除和定期刪除兩種策略配合使用。 惰性刪除:Redis的惰性
    的頭像 發(fā)表于 10-09 11:06 ?525次閱讀

    linux中刪除文件的命令

    在Linux中,可以使用 rm 命令來(lái)刪除文件。該命令多個(gè)參數(shù)和選項(xiàng)可供使用,以根據(jù)不同的情況進(jìn)行文件刪除操作。例如: rm 命令后面跟上文件名,可以刪除單個(gè)文件。 rm -r 或
    的頭像 發(fā)表于 11-08 14:11 ?1049次閱讀

    linux刪除文件命令rm

    在Linux系統(tǒng)中,可以使用rm命令來(lái)刪除文件或目錄。該命令的功能是刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,也可以將某個(gè)目錄及其下的所有文件及子目錄均刪除。對(duì)于鏈接文件,rm命令只是斷開(kāi)了鏈接,源文件
    的頭像 發(fā)表于 11-13 16:42 ?1025次閱讀