国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解)

這篇具有很好參考價值的文章主要介紹了Redis原理篇(List底層結(jié)構(gòu)與源碼詳解)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.概述

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存

?二.lpush與rpush源碼

1.下面是lpush與rpush的源碼,都使用了pushGenericCommand()這個方法

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存

?

2.pushGenericCommand()---List通用插入數(shù)據(jù)函數(shù)--源碼

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存第一個參數(shù): *c?

當redis客戶端與服務端連接成功后,客戶端就會被封裝成一個client對象,里面包含了用戶對redis的命令。比如說" LPUSH? key? k1? k2" 就是客戶端的一個命令,redis會把 LPUSH ,key,k1,k2放在一個argv[]數(shù)組里面。argv[0] 是LPUSH,argv[1] 是key ,argv[2]是k1,argv[3]是k2

第二個參數(shù):where ,表示在隊首還是隊尾插入數(shù)據(jù)
第三個參數(shù):xx表示在根據(jù)key找對應的list 沒找到時,是應該直接return還是新建一個list,默認值是新建一個list

3.lookupkeyWrite(),嘗試找到key對應的list

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存第一個參數(shù),c->db是客戶端選擇的第幾個redis數(shù)據(jù)庫(有0~15共16個)
第二個參數(shù),c->argv[1] 就是key

返回的是robj (即RedisObject)

再來看下面這串代碼,表示前面的lookupkeyWrite()返回值是null,就是該key沒有對應一個list

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存

?為空就直接創(chuàng)建新的QuickList

4.createQuicklistObject()源碼:創(chuàng)建QuicklistObject函數(shù)

?Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存

?其中的createObject()源碼

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存?

?對壓縮列表參數(shù)和壓縮深度進行初始化;

三.總結(jié)

最后的結(jié)構(gòu)是這樣的:

Redis原理篇(List底層結(jié)構(gòu)與源碼詳解),redis,數(shù)據(jù)庫,緩存文章來源地址http://www.zghlxwxcb.cn/news/detail-814182.html

到了這里,關于Redis原理篇(List底層結(jié)構(gòu)與源碼詳解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Redis從入門到精通【高階篇】之底層數(shù)據(jù)結(jié)構(gòu)整數(shù)集(IntSet)詳解

    Redis從入門到精通【高階篇】之底層數(shù)據(jù)結(jié)構(gòu)整數(shù)集(IntSet)詳解

    上個篇章回顧,我們上個章節(jié)我們學習了《Redis從入門到精通【高階篇】之底層數(shù)據(jù)結(jié)構(gòu)字典(Dictionary)詳解》,我們從源碼層了解字典是一種以鍵值對(key-value)形式存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。在 Redis 中,字典使用哈希表來實現(xiàn)。哈希表是一種以常數(shù)時間復雜度 O(1) 進行插入、刪

    2024年02月09日
    瀏覽(19)
  • Redis從入門到精通【高階篇】之底層數(shù)據(jù)結(jié)構(gòu)壓縮列表(ZipList)詳解

    Redis從入門到精通【高階篇】之底層數(shù)據(jù)結(jié)構(gòu)壓縮列表(ZipList)詳解

    前面的Redis從入門到精通的基礎篇和進階篇都是在使用層面和概念層面,本章節(jié),我們了解一下redis的底層數(shù)據(jù)結(jié)構(gòu),上幾個章節(jié),我們講了SDS,字典 。本章節(jié)我們聊一下ZipList。 壓縮列表(ZipList)就是redis為了節(jié)約內(nèi)存而設計開發(fā)的數(shù)據(jù)結(jié)構(gòu),并且作為列表鍵和哈希鍵的底層

    2024年02月08日
    瀏覽(25)
  • Redis進階底層原理-Cluster集群底層

    Redis進階底層原理-Cluster集群底層

    Redis底層原理篇

    2024年02月16日
    瀏覽(23)
  • Redis底層原理深入學習

    Redis底層原理深入學習

    一、基本類型及底層實現(xiàn) ?1.String 1) 使用場景: 簡單字符串存儲、分布式鎖、計數(shù)器、全局唯一ID 2) 數(shù)據(jù)結(jié)構(gòu): C語言中String用char[]表示,源碼中用SDS封裝char[],這是Redis存儲的最小單元,一個SDS最大可以存儲512M信息。 ?Redis對SDS再次封裝成RedisObject,核心作用有兩個: ①

    2024年02月08日
    瀏覽(30)
  • Redis底層原理

    Redis底層原理

    Redis雖然是個內(nèi)存數(shù)據(jù)庫,但是Redis支持RDB和AOF兩種持久化機制,將數(shù)據(jù)寫往磁盤,可以有效地避免因進程退出造成的數(shù)據(jù)丟失問題,當下次重啟時利用之前持久化的文件即可實現(xiàn)數(shù)據(jù)恢復。 RDB RDB持久化是把當前進程數(shù)據(jù)生成快照保存到硬盤的過程。所謂內(nèi)存快照,就是指內(nèi)

    2024年01月21日
    瀏覽(14)
  • Redis底層數(shù)據(jù)結(jié)構(gòu)

    SDS全稱是Simple Dynamic String,具有如下顯著的特點: 常數(shù)復雜度獲取字符串長度:C語言獲取一個字符串的長度需要遍歷整個字符串時間復雜度為O(N),而SDS在屬性len中記錄了字符串長度,獲取字符串長度的時間復雜度為O(1)。 杜絕緩沖區(qū)溢出:C字符串在執(zhí)行拼接字符串時,如果

    2024年02月13日
    瀏覽(32)
  • Redis - 底層數(shù)據(jù)結(jié)構(gòu)

    Redis - 底層數(shù)據(jù)結(jié)構(gòu)

    Redis 的底層數(shù)據(jù)結(jié)構(gòu)主要以下幾種: SDS(Simple Dynamic String, 簡單動態(tài)字符串) ZipList(壓縮列表) QuickList(快表) Dict(字典) IntSet(整數(shù)集合) ZSkipList(跳躍表) 在 Redis 中,并不會直接使用 C 語言自帶的字符串結(jié)構(gòu)作為實際的存儲結(jié)構(gòu),而只是將字符串作為字面量使用,大多數(shù)情況使用自

    2023年04月12日
    瀏覽(30)
  • Redis學習(三)分布式緩存、多級緩存、Redis實戰(zhàn)經(jīng)驗、Redis底層原理

    Redis學習(三)分布式緩存、多級緩存、Redis實戰(zhàn)經(jīng)驗、Redis底層原理

    單節(jié)點Redis存在著: 數(shù)據(jù)丟失問題:單節(jié)點宕機,數(shù)據(jù)就丟失了。 并發(fā)能力和存儲能力問題:單節(jié)點能夠滿足的并發(fā)量、能夠存儲的數(shù)據(jù)量有限。 故障恢復問題:如果Redis宕機,服務不可用,需要一種自動的故障恢復手段。 RDB持久化 RDB(Redis database backup file,Redis數(shù)據(jù)庫備份

    2024年02月16日
    瀏覽(32)
  • Redis進階底層原理- 持久化

    Redis進階底層原理- 持久化

    Redis-Fork、RDF、RDB底層原理

    2024年02月16日
    瀏覽(30)
  • Redis - 數(shù)據(jù)類型映射底層結(jié)構(gòu)

    Redis - 數(shù)據(jù)類型映射底層結(jié)構(gòu)

    從數(shù)據(jù)類型上體現(xiàn)就是,同一個數(shù)據(jù)類型,在不同的情況下會使用不同的編碼類型,底層所使用的的數(shù)據(jù)結(jié)構(gòu)也不相同。 字符串對象的編碼可以是 int 、 raw 和 embstr 三者之一。 embstr 編碼是專門用于保存簡短字符串的一種優(yōu)化編碼方式,與 raw 編碼會調(diào)用兩次內(nèi)存分配函數(shù)分

    2023年04月21日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包