Redis-list類型

這里只是介紹命令使用

列表是用來存儲多個有序的字符串

可以用來充當棧和隊列的角色

列表特點:

  1. 列表中的元素是有序的,可以通過索引下標來獲取某個元素或者某個范圍的元素

  2. 獲取和刪除有區別

  3. 元素可以重復

命令

LPUSH

將一個或者多個元素從左側放入到list中(頭插法)

lpush key element {element ……}

時間復雜度: O(N) N表示插入的元素個數

返回值: 插入新對象之后 list 的長度

LPUSHX

在 key 存在的時候,將一個或者多個元素從左側放入,不存在就會直接返回

lpushx key element {element……}

時間復雜度: O(N) N表示插入的元素個數

返回值: 插入后 list 的長度, key 不存在就是返回 0

RPUSH

將一個或者多個元素從右側進行插入(尾插)

rpush key element {element……}

時間復雜度: O(N) N為插入的元素個數

返回值: 插入后 list 的長度

RPUSHX

在 key 存在時,將一個或者多個元素從右側插入,和 lpushx 類似

rpushx key element {element……}

時間復雜度: O(N) N為插入的元素個數

返回值: 插入后 list 的長度

LRANGE

獲取從 start 到 end 區間的所有元素,左閉右閉

lrange key start end

時間復雜度: O(N)

返回值: 指定區間的元素

LPOP

從 list 左側取出元素(從頭刪除)

lpop key

時間復雜度: O(1)

返回值: 對應取出的元素,如果沒有元素或者key不存在返回 nil

RPOP

從 list 右側取出對應元素(尾刪),其余與 LPOP 相似

rpop key

時間復雜度: O(1)

返回值: 對應取出的元素,如果沒有元素或者key不存在返回 nil

LINDEX

獲取對應下標的元素(從左往右數)

lindex key value

時間復雜度: O(N)

返回值: 下標對應的元素或者 nil

LINSERT

在指定位置插入元素

linsert key {before | after} pivot(要插入的位置) element

時間復雜度: O(N)

返回值: 插入之后list的新長度

LLEN

獲取 list 長度

llen key

時間復雜度: O(1)

返回值: list 的具體長度

阻塞版命令

區別

  1. 在 list 中有元素的情況下,阻塞版和非阻塞版的結果是一致的

  2. 如果沒有元素,非阻塞版會直接返回 nil ,阻塞版會根據 timeout 來進行一段時間的阻塞,在此期間 redis 可以執行其他命令,但是對應被阻塞了的客戶端還是會表示為阻塞狀態

  3. 命令中如果設置了多個鍵,那么會從左向右遍歷,一旦對應上就會彈出元素,并立即返回

  4. 如果多個客戶端同時對一個鍵執行 pop ,那么只有最先執行的客戶端可以得到彈出的元素

命令

BLPOP

LPOP的阻塞版

blpop key {key……} timeout

時間復雜度: O(1)

返回值: 取出的元素 或者 nil

BRPOP

RPOP的阻塞版

brpop key {key……} timeout

時間復雜度: O(1)

返回值: 取出的元素 或者 nil

命令總結

操作

命令

時間復雜度

添加

rpush key value [value ...]

O(k),k 是插入的元素個數

lpush key value [value ...]

O(k),k 是插入的元素個數

linsert key before|after pivot value

O(n),n 是 pivot 距離頭或尾的偏移量

查找

lrange key start end

O(s + n),s 是 start 偏移量,n 是范圍長度

lindex key index

O(n),n 是索引的偏移量

llen key

O(1)

刪除

lpop key

O(1)

rpop key

O(1)

lrem key count value

O(k),k 是列表元素個數(需遍歷)

ltrim key start end

O(k),k 是需保留的元素個數

修改

lset key index value

O(n),n 是索引的偏移量

阻塞版

blpop key [key ...] timeout

O(1)

brpop key [key ...] timeout

O(1)

內部編碼

  • 當元素個數比較小同時沒有較大元素時,是 ziplist

  • 但是有時會顯示為 quicklist (redis 的默認鏈表實現)

  • 當元素個數超過 512 時,是 linkedlist

  • 當某個元素長度超過 64 字節時,是 linkedlist

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

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

相關文章

Business English Certificates (BEC) 高頻詞匯背誦

Business English Certificates {BEC} 高頻詞匯背誦 References Cambridge English: Business Certificates, also known as Business English Certificates (BEC), are a suite of three English language qualifications for international business. abandon /??bnd?n/ …

第十四屆藍橋杯省賽真題解析(含C++詳細源碼)

第十四屆藍橋杯省賽 整數刪除滿分思路及代碼solution1 (40% 雙指針暴力枚舉)solution 2(優先隊列模擬鏈表 AC) 冶煉金屬滿分代碼及思路 子串簡寫滿分思路及代碼solution 1(60% 雙指針)solution 2&#xff0…

AI Agent開發大全第二十一課-如何開發一個MCP(從0開發一個MCP Client)

開篇 上一章《AI Agent開發大全第二十課-如何開發一個MCP(從0開發一個MCP Server)》里我們講了如何從0開始開發一個MCP Server。可以看到文中大量細節為MCP發明者官網Claude都不曾或者是遺漏的,而且還有那么多點遺漏,想要真正要在企業生產級環境使用MCP是需要做分布式開發的…

TypeScript面試題集合【初級、中級、高級】

初級面試題 什么是TypeScript? TypeScript是JavaScript的超集,由Microsoft開發,它添加了可選的靜態類型和基于類的面向對象編程。TypeScript旨在解決JavaScript的某些局限性,比如缺乏靜態類型和基于類的面向對象編程&#xff0c…

無錫無人機駕駛證培訓費用

無錫無人機駕駛證培訓費用,隨著科技的迅速發展,無人機在眾多行業中發揮著舉足輕重的作用。從影視制作到農業監測,再到物流運輸與城市規劃,無人機的應用場景不斷擴展,因此越來越多的人開始意識到學習無人機駕駛技能的重…

2181、合并零之間的節點

2181、[中等] 合并零之間的節點 1、問題描述: 給你一個鏈表的頭節點 head ,該鏈表包含由 0 分隔開的一連串整數。鏈表的 開端 和 末尾 的節點都滿足 Node.val 0 。 對于每兩個相鄰的 0 ,請你將它們之間的所有節點合并成一個節點&#xff…

相機的曝光和增益

文章目錄 曝光增益增益原理主要作用增益帶來的影響增益設置與應用 曝光 參考:B站優致譜視覺 增益 相機增益是指相機在拍攝過程中對圖像信號進行放大的一種操作,它在提高圖像亮度和增強圖像細節方面起著重要作用,以下從原理、作用、影響以…

小飛電視 2.7.0 | 高清秒播無卡頓的電視直播軟件

小飛電視采用了流行的天光YY殼進行二次開發,內置了熱門的肥羊源。更新后在加載速度和播放速度上有了顯著提升,并提供了豐富的內容和各種分類欄目,包括4K和8K頻道以及經典的直播內容如虎芽、斗魚、歪歪等。該軟件的最大特點是其穩定性和無廣告…

【Python爬蟲高級技巧】BeautifulSoup高級教程:數據抓取、性能調優、反爬策略,全方位提升爬蟲技能!

大家好,我是唐叔!上期我們聊了 BeautifulSoup的基礎用法 ,今天帶來進階篇。我將分享爬蟲老司機總結的BeautifulSoup高階技巧,以及那些官方文檔里不會告訴你的實戰經驗! 文章目錄 一、BeautifulSoup性能優化技巧1. 解析…

【愚公系列】《高效使用DeepSeek》055-可靠性評估與提升

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

C# Winform 入門(12)之制作簡單的倒計時

倒計時效果展示 控件展示 以下均是使用label來形成的 label 的 BorderStyle:Fixed3D ForeColor:Red Blackground:Black label 的屬性 Name: txtyear txtmonth txtday txttime txtweek txtDays txtHour txtM…

edge webview2 runtime跟Edge瀏覽器軟件安裝包雙擊無反應解決方法

軟件安裝報錯問題有需要遠程文章末尾獲取聯系方式,可以幫你遠程處理各類安裝報錯。 一 、edge webview2 runtime跟Edge瀏覽器軟件安裝包雙擊無反應 在安裝edge webview2 runtime跟Edge瀏覽器雙擊無反應沒有出現安裝界面。這個可能是 新版本的Edge WebView2 Runti…

TDengine 從入門到精通(2萬字長文)

目錄 第一章:走進 TDengine 的世界 TDengine 是個啥? TDengine 的硬核特性 性能炸裂 分布式架構,天生可擴展 SQL 用起來賊順手 寫入方式花樣多 內置緩存,省心又省力 TDengine 能干啥? 智能制造 能源管理 物聯網平臺 工業大數據 第二章:上手 TDengine:安裝與…

keil5忽略警告

目錄 前言 風險不多做贅述。強迫癥患者使用。警告有時候就是問題關鍵,被屏蔽了就不會在意。小心使用 環境: 芯片:STM32F103C8T6 Keil:V5.35.0.2 一、示例 警告內容如下: 二、解決辦法 1.先看這位 MDK-Keil AC6 …

【Linux】iptables命令的基本使用

語法格式 iptables [-t 表名] 管理選項 [鏈名] [條件匹配] [-j 目標動作或跳轉]注意事項 不指定表名時,默認使用 filter 表不指定鏈名時,默認表示該表內所有鏈除非設置規則鏈的缺省策略,否則需要指定匹配條件 設置規則內容 -A&#xff1a…

MyBatis查詢語句專題、動態SQL、MyBatis的高級映射及延遲加載

一、MyBatis查詢語句專題 模塊名:mybatis-008-select 打包方式:jar 引入依賴:mysql驅動依賴、mybatis依賴、logback依賴、junit依賴。 引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml 創建pojo類&#xff1a…

Visual Studio Code SSH 連接超時對策( keep SSH alive)

文章目錄 問題解決方法一&#xff1a;配置服務端關于ClientAliveInterval和ClientAliveCountMax1、打開終端&#xff0c;打開SSH配置文件&#xff1a;輸入以下命令&#xff1a;2、打開配置文件后&#xff0c;添加以下內容&#xff1a;3、添加后&#xff0c;Esc按 <Enter>…

學透Spring Boot — 014. Spring MVC的自動配置

這是學透Spring Boot的第14篇文章&#xff0c;更多文章請移步我的專欄&#xff1a; 學透 Spring Boot_postnull咖啡的博客-CSDN博客 目錄 沒有Spring Boot時的Spring MVC 使用Spring Boot后的Spring MVC Spring MVC的自動配置解析 明確目標 入口類 Spring容器的啟動 S…

SQL語句(三)—— DQL

目錄 基本語法 一、基礎查詢 1、查詢多個字段 2、字段設置別名 3、去除重復記錄 4、示例代碼 二、條件查詢 1、語法 2、條件列表常用的運算符 3、示例代碼 三、分組查詢 &#xff08;一&#xff09;聚合函數 1、介紹 2、常見的聚合函數 3、語法 4、示例代碼 &…

LENOVO聯想ThinkBook 16 G6 ABP(21KK)恢復預裝OEM原廠Win11系統鏡像

適用機型&#xff1a;【21KK】 鏈接&#xff1a;https://pan.baidu.com/s/1lbvIh4KTbqm8EZQZfxvNIQ?pwd7vp0 提取碼&#xff1a;7vp0 聯想原裝系統自帶所有驅動、出廠主題壁紙、系統屬性聯機支持標志、Office辦公軟件、聯想瀏覽器、聯想電腦管家、聯想軟件商店、聯想智能引…