在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

小林coding ? 來源:小林coding ? 2023-04-17 10:10 ? 次閱讀

問題

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è)問題,4.0 里引出了 UNLINK 命令,可以異步釋放 value 對(duì)象,放到一個(gè)子線程中。

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

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

大 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ù)不同)不過我們需要知道異步釋放的好處(不阻塞主線程)和它的壞處(需要進(jìn)行一些線程同步相關(guān)的操作,內(nèi)存釋放不及時(shí))。

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

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

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

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

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

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





審核編輯:劉清

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

    關(guān)注

    0

    文章

    3

    瀏覽量

    6584
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    385

    瀏覽量

    11338

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    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)問如何用f_unlink刪除一個(gè)文件夾?

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

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

    這個(gè)程序是從mytask里面刪除youtask,想請(qǐng)問一下大神,在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.2w次閱讀

    刪除軟件的方法哪些?

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

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

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

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

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

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

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

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

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

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

    實(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 ?1331次閱讀
    <b class='flag-5'>刪除</b>網(wǎng)絡(luò)失敗的問題處理

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

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

    linux中刪除文件的命令

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

    linux刪除文件命令rm

    在Linux系統(tǒng)中,可以使用rm命令來刪除文件或目錄。該命令的功能是刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,也可以將某個(gè)目錄及其下的所有文件及子目錄均刪除。對(duì)于鏈接文件,rm命令只是斷開了鏈接,源文件
    的頭像 發(fā)表于 11-13 16:42 ?1282次閱讀
    主站蜘蛛池模板: 午夜免费福利片观看 | 欧美色性视频 | 黄视频免费在线看 | 久久青草精品一区二区三区 | 婷婷日日夜夜 | 国内一级特黄女人精品片 | 天天色天天碰 | 九色亚洲 | 4455永久在线毛片观看 | 九九精品影院 | 伊人久久大香线焦在观看 | 韩国床戏合集三小时hd中字 | 婷婷四房综合激情五月性色 | 天天久久综合网站 | 一 级 黄 色 片生活片 | 国产欧美日韩综合精品无毒 | 婷婷射| 天天舔天天色 | 国产哺乳期奶水avav | 午夜高清在线观看免费6 | 成人黄色在线网站 | 久久久久久久成人午夜精品福利 | 又大又粗又爽黄毛片 | 狠狠操夜夜爱 | 久久国产精品久久久久久久久久 | 免费啪啪网| 欧美一级鲁丝片 | 天天干天天草天天射 | 国产小视频在线高清播放 | 一区二区福利 | 天天干天天干天天操 | 超级香蕉97视频在线观看一区 | 天堂在线.www资源在线观看 | 亚洲一级毛片免观看 | 樱桃磁力bt天堂 | 久久亚洲欧美成人精品 | 色偷偷尼玛图亚洲综合 | 欧洲精品码一区二区三区免费看 | 三级电影在线观看视频 | 男人你懂的在线观看视频 | 97超频国产在线公开免费视频 |