Redis鍵值對中值的數據結構

前言

前面我們已經介紹了Redis的鍵值對存儲管理的底層數據結構。如果不清楚的同志可以看我前面的博客

Redis數據庫存儲鍵值對的底層原理-CSDN博客

下面,我們來看一下Redis鍵值對中值的數據結構有那些叭

Redis常見的5種數據類型

string? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 動態字符串,可擴容

list列表? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?壓縮列表、雙向鏈表

hash散列? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 壓縮列表、哈希表

set無序唯一集合,可求交集、并集、差集? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 哈希表

zset有序集合分值排序(分值可以重復) zset不支持差集運算? ? ? ? ? ? ? ? ? ? ? ? 壓縮列表、跳表

所以,我們常見的Redis鍵值對中值的數據結構有字符串、雙向鏈表、哈希表、壓縮列表和跳表

字符串和雙向鏈表就不需要過多解釋,非常常見,哈希表在前面已經解釋過了,如果不清楚的同志可以看我的上篇文章

Redis數據庫存儲鍵值對的底層原理-CSDN博客

所以我們現在需要重點講解一下,壓縮列表和跳表

壓縮列表

壓縮列表就是可以理解為是一個數組
與數組不同的是
1、壓縮列表存儲的是序列化之后的值
2、壓縮列表在表頭有三個字段,分別是列表字節長度、列表尾節點的字節偏移量、列表中數據的個數,為數組提供高效的尾部數據插入

????????我們可以使用表頭的三個字段快速訪問到數組的第一項數據和最后一項數據,?查找其他元素時,就沒有這么?效了,只能逐個查找

列表尾節點的字節偏移量可以理解為不帶最后一項數據的數組字節長度

其中,list列表、hash、set集合、有序集合zset在數據量少的時候使用的就是壓縮列表

跳表

有序鏈表只能逐?查找元素,導致操作起來?常緩慢,于是就出現了跳表。具體來說,跳表在鏈表 的基礎上,增加了多級索引,通過索引位置的?個跳轉,實現數據的快速定位

跳表上面的索引也是使用鏈表做的,比如第0層為有序鏈表,第1層隔一個節點取一個節點組成鏈表索引,依次操作,直至最頂層最少為一個節點

優先使用壓縮列表原因

數據量少的情況下使用壓縮列表的原因

壓縮列表本質就是一個帶有三個字段表頭的數組

1、內存利?率,數組和壓縮列表都是?常緊湊的數據結構,它?鏈表占?的內存 要更少

2、Redis是內存數據庫,?量數據存到內存中,此時需要做盡可能的優化,提?內存的利?率。

3、數組對CPU?速緩存?持更友好,所以Redis在設計時,集合數據元素較少情況下, 默認采?內存緊湊排列的?式存儲,同時利?CPU?速緩存不會降低訪問速度。當數據元素超 過設定閾值后,避免查詢時間復雜度太?,轉為哈希和跳表數據結構存儲,保證查詢效率

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91862.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91862.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91862.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL自動化安裝工具-mysqldeploy

功能 可在linux系統上安裝 mysql5.5/5.6/5.7/8.0/8.4 版本的 MySQL,可以初始化多實例 MySQL。 碼云: https://gitee.com/hh688/mysqldeploy guithub: https://github.com/hhkens/mysqldeploy 限制 僅在 centos7 環境進行測試,后期可能支持更多系統。 此程…

簡要探討大型語言模型(LLMs)的發展歷史

關注大型語言模型(LLMs) 簡要探討語言模型的發展歷史 理解Transformer架構的基本元素和注意力機制 了解不同類型的微調方法 語言模型的大小之分 在語言模型領域,“小”和“大”是相對概念。幾年前還被視為“巨大”的模型,如今已被認為相當小。該領域發展迅猛,從參數規模為…

Java試題-選擇題(2)

Java試題-選擇題(2) 題目 下列語句創建對象的總個數是: String s=“a”+“b”+"c”+“d”+"e” A.4 B.2 C.3 D.1 關于下面的程序段的說法正確的是()? File file1=new File(“e:\xxx\yyy\zzz");file1.mkdir(); A.如目錄e:\xxx\yyy\不存在,程序會拋出FileN…

揭秘動態測試:軟件質量的實戰防線

動態測試概述(擴展版) 目錄 動態測試概述(擴展版) 一、動態測試的定義與重要性 ? 二、動態測試類型 🔍 (一)功能測試 🧩 (二)非功能測試 &#x1f4ca…

機器學習①【機器學習的定義以及核心思想、數據集:機器學習的“燃料”(組成和獲取)】

文章目錄先言一、什么是機器學習1.機器學習的定義以及核心思想2.機器學習的四大類型2.1監督學習(Supervised Learning)2.2半監督學習(Midsupervised Learning)2.3無監督學習(Unsupervised Learning)2.4強化…

GaussDB 數據庫架構師(十二) 資源規劃

1 硬件和軟件要求 1)硬件配置示例 硬件配置示例設備類型 設備型號 數量 備注 計算節點 CPU: 2*64 Cores,Kunpeng 920 內存:32*32GB 系統盤:2*960GB SATA SSD 數據盤:24*960GB SATA SSD RAID卡&#x…

Linux系統文件與目錄內容檢索(Day.2)

一、文件和目錄內容檢索處理命令1、uniq去重語法uniq [options] [input_file [output_file]]選項選項作用-c進行計數,并刪除文件中重復出現的行-d僅顯示連續的重復行-u僅顯示出現一次的行-i忽略大小寫案例1、刪除輸入文件中的重復行sort input.txt | uniq2、僅顯示重…

如何選擇一個容易被搜索引擎發現的域名?

在這個數字化時代,域名不僅是企業線上身份的標識,更是影響網站搜索曝光率的關鍵因素。一個精心挑選的域名能為品牌帶來更多自然流量,下面我們就來探討幾個實用技巧。一、簡潔易記是王道好域名首先要讓人過目不忘。想象一下,當用戶…

樹形DP進階:結合dfn序的線性化樹問題求解技巧

樹形DP進階:結合dfn序的線性化樹問題求解技巧一、dfn序與樹的線性化1.1 dfn序的基本概念1.2 樹形DP結合dfn序的優勢二、核心應用:子樹區間的DP優化2.1 子樹權值和的快速查詢與更新問題描述結合dfn序的解法代碼實現(前綴和版本)優化…

九、Maven入門學習記錄

Maven介紹Maven作用統一項目結構Maven安裝(注意配置阿里云私服時url要跟換成最新的)IDEA創建Meavn項目Maven坐標介紹IDEA導入Maven項目依賴配置依賴傳遞依賴傳遞-排除依賴依賴范圍生命周期生命周期-執行特定生命周期生命周期-總結

中標喜訊 | 安暢檢測再下一城!斬獲重慶供水調度測試項目

安暢檢測在第三方檢測領域持續深耕,再傳捷報!公司于2025年7月30日正式收到中標通知,成功拿下重慶水資源產業股份有限公司 “重慶西部科學城多水廠分區分壓供水優化調度研究項目(軟件測試標段)”。 此次中標不僅是市場…

銀河麒麟V10一鍵安裝DM8的腳本及高階運維SQL分享

介質下載地址名稱網址銀河麒麟高級服務器操作系統V10(SP3)用戶手冊https://www.kylinos.cn/support/document/60.htmlDM8 安裝手冊https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.htmlDM 數據庫安裝(Linux安裝)h…

cobalt strike(CS)與Metasploit(MSF)聯動

CS —> MSF首先cs上創建一個http的外部監聽器。此時在CS服務端查看監聽的ip,發現并沒有開啟,需要到成功移交會話后才會啟動。netstat -tunlp | grep 7000在MSF中使用handler模塊,配置監聽。注意:目標機器的地址是rhost&#xf…

C# 類型

原文:C# 類型_w3cschool C#類型 類型定義值的藍圖。有不同的操作與不同類型相關聯。 在下面的示例中,我們使用兩個類型為int的常量,值為2 和 3。 static void Main() {int x 2 * 3;Console.WriteLine (x); } int 是一個表示整數值的構建…

確保TDesign Vue Next中t-color-picker組件在彈出顏色拾取面板時保證該面板不抖動方法參考

使用TDesign Vue Next中的組件t-color-picker時,在顏色面板彈出后,如果修改里面的顏色,發現這個顏色拾取面板會隨著顏色的改變位置不斷抖動,該問題由顯示顏色的數值文本的長度變化引起,因此要覆蓋組件內部顏色值文本的…

bypass

代碼解析修改自身bypass&#xff1a;第一句話$s"Declaring file object\n";定義一個s&#xff0c;值為Declaring file object第二句話$d$_SERVER[DOCUMENT_ROOT].$_SERVER[DOCUMENT_URI]; 不知道$_SERVER是什么&#xff0c;那就打印出來看看。輸入echo <pre>;…

C語言:構造類型學習

內容提要 構造類型 枚舉類型typedef 綜合案例&#xff1a;斗地主 構造類型 枚舉類型 建議&#xff1a;如果定義不相干的常理&#xff0c;使用宏定義&#xff08;符號常量&#xff09;&#xff1b;如果需要定義一組相關聯的常量&#xff0c;如月份0~11&#xff0c;星期0~6&#…

Prometheus-3--Prometheus是怎么抓取Java應用,Redis中間件,服務器環境的指標的?

1、Prometheus抓取Java應用的指標 1、數據來源&#xff1a;Java應用自身暴露的指標 Java應用的指標數據來源于應用代碼中定義的指標對象&#xff08;如Counter、Gauge、Histogram等&#xff09;&#xff0c;通過Prometheus客戶端庫&#xff08;如io.prometheus:client_java&…

42.安卓逆向2-補環境-unidbg安裝和簡單使用

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

數據結構與算法:哈希函數的應用及一些工程算法

前言這篇里的東西可以說了解了解就行了。一、哈希函數均勻性展示原本讓deepseek轉了一下老師的java代碼&#xff0c;但發現復刻起來太麻煩了。又因為這個理解就好&#xff0c;競賽不會有&#xff0c;所以就直接貼老師的java代碼了……import java.security.MessageDigest; impo…