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

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

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

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

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

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

問題

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

彬彬回答

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

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

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

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

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

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

大 value 對象的釋放是異步的,放在一個子線程上,小對象之所以不異步釋放,是因為異步釋放,主線程和子線程之間需要做一些同步操作(這是有代價的),然后小對象釋放,本身也很快就也不值得進行異步釋放,內(nèi)存釋放也更及時。

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

所以如果是一個小對象,DEL 和 UNLINK 其實一樣;如果是一個大對象,UNLINK 會更加好。

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

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

在補充一點,前面舉例是說的 list,底層是用的 quicklist,嚴格來說統(tǒng)計的是 quicklistNode 的節(jié)點數(shù)量,就不是列表元素數(shù)量。

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

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

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

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





審核編輯:劉清

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

    關(guān)注

    0

    文章

    3

    瀏覽量

    6531
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    379

    瀏覽量

    10967

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    ADS1294和ADS1298區(qū)別

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

    不會做Android的藍牙調(diào)試

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

    請問如何用f_unlink刪除一個文件夾?

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

    為什么YouTask自己刪除自己不會顯示多次?

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

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

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

    刪除軟件的方法哪些?

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

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

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

    重要機密文檔該刪除還是粉碎?

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

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

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

    拼多多被曝遠程刪除用戶照片

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

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

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

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

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

    linux中刪除文件的命令

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

    linux刪除文件命令rm

    在Linux系統(tǒng)中,可以使用rm命令來刪除文件或目錄。該命令的功能是刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄及其下的所有文件及子目錄均刪除。對于鏈接文件,rm命令只是斷開了鏈接,源文件
    的頭像 發(fā)表于 11-13 16:42 ?1026次閱讀
    主站蜘蛛池模板: 日本黄色站 | 操女人网址 | 精品视频免费看 | 小雪被老外黑人撑破了视频 | sao虎在线精品永久 se94se欧美 | 欧美日本俄罗斯一级毛片 | 美女大黄三级视频在线观看 | 在线欧美视频免费观看国产 | 日本黄色美女网站 | 国产成人精品三级在线 | 激情五月在线 | 久久精品影视 | 美剧免费在线观看 | h视频日本 | 亚洲 欧美 自拍 卡通 综合 | 国产福利网站 | 男人的天堂黄色 | 国产高清在线看 | 免费操人视频 | 亚洲成人黄色网址 | 国产剧情麻豆三级在线观看 | 丁香花在线视频观看免费 | 91极品视频在线观看 | 大杳蕉伊人狼人久久一本线 | 欧美日韩国产网站 | 欧美一级特黄aaaaaa在线看片 | 四虎影院观看视频 | 天堂资源站 | 日韩免费三级 | xxxx人妖| 你懂得福利 | 天天干天天操天天操 | 欧美性极品xxxxx | 台湾香港澳门三级在线 | 欧美456| 婷婷激情狠狠综合五月 | 深夜福利一区 | 免费网站看黄 | 久久99热不卡精品免费观看 | www一级毛片| 特级生活片 |