女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    瀏覽量

    6581
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    384

    瀏覽量

    11312

原文標題: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 ?2400次閱讀

    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.2w次閱讀

    刪除軟件的方法哪些?

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

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

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

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

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

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

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

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

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

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

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

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

    linux中刪除文件的命令

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

    linux刪除文件命令rm

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