Redis初識第七期---ZSet的命令和應用場景

ZSet相較于Set來說,它又是有序的,這個有序指的就是我們通常意義上的有序了,ZSet內部中是按照升序來排序的。

排序規則:ZSet相較于Set來說,它內部引入了一個新的屬性:分數(Score),浮點類型,對于每一個member都有一個Score與之對應,member是要求唯一的,但是Score是可以重復的,排序的依據就是Score,如果Score重復的話,則按照字典序進行排序。

命令

普通操作

1.Zadd

完整語法:

Zadd key [NX|XX]? ?[GT|LT]? ?[ch] [Incr]? Score member? [Score? member.....]

作用是添加元素。時間復雜度為O(logn)。

參數:

[NX|XX]:NX表示只添加不更新,如果已經存在,即使Score不同也會添加失敗。XX:表示只更新,不添加。默認情況為不存在就添加,存在的話就更新分數。

[GT|LT]:GT表示比原來Score大才更新,LT就表示比原來Score分數小才更新。

[CH]:不寫CH返回的是添加的個數,如果寫上CH則將更新的也包含在內。主要適用于XX,因為它只更新不添加,返回值默認為0。

[Incr]:對元素進行加減操作,默認為加,減的話使用負數來實現,使用后后面就只能指定一個Score和member了。(不能同時對多組member進行操作)。

2.Zrange

和List中Lrange類似,可以查詢一對下標構成的空間,但是Zrange可以在下標后加上WithScores來同時查詢member和Score,時間復雜度為O(logn);

3.Zcard?

Zcard key

獲取key中的元素個數。

4.ZCount key min max

獲取Score在min和max中的元素個數,值得注意的是Max和Min為閉區間,如果想要為開區間可以在前面加上(,即(min (max,同時Redis引入了兩個特殊值:inf:表示無窮大,-inf:表示無窮小。

5.Zrevrange

用法和Zrange一樣,只不過是逆序返回罷了。

阻塞版本命令

6.ZpopMax

ZpopMax key [count]

刪除并返回分數最高的count個元素。

7.BzpopMax

BzpopMax key[key....] timeout

ZpopMax的阻塞版本,提供timeout來指定最長阻塞時間,支持小數,單位s。但是和ZpopMax不同的是不可以指定刪除的個數。

8.ZpopMin

ZpopMin key [count]

刪除Zset中Score最小的count個元素。

9.BzpopMin key[key...] timeout

和BzpopMax用法一樣,這里不做過多贅述。

值得注意的是以上操作的時間復雜度都是O(logn)(內部編碼為ziplist時為O(N)),這是因為SkipList沒有維護頭部指針和尾部指針,即使是頭/尾刪,仍然需要遍歷。

10.Zrank key member

時間復雜度為O(logN)。

作用是獲取key中member的排名(下標)。

11.ZrevRank key member

也是獲取member的排名,只不過是逆序(降序)。

12.Zscore key member

查找指定元素的分數,但是時間復雜度為O(1)!,這是因為Redis同時維護了一個哈希表,使得查找復雜度為O(1)。

13.Zrem key member [member....]

刪除指定的元素,返回刪除的個數。

14.ZremRangeByRank key start stop?

范圍刪除,把從start到stop之間的全刪了(根據下標)。

15.ZremRangeByScore key? min max

指定一個刪除區間,通過分數來描述。

16.ZincrBy key increment member

給指定的member增加increment(支持小數)。

集合間操作

Zinter,Zunion,Zdiff從Redis6.2才支持,用法和ZinterStore,ZunionStore類似,這里不過多解釋了。

17.ZinterStore

ZinterStore destination numbers? key [key.....] [weights....] [Aggregate <Sum|Min|Max>]

求并集并存儲到destination中。

numbers:指定有多少個key參與運算,避免key和后面的參數混肴。

weights:權重,就是每個key中Score要乘的倍數,如果要使用的話,前面必須要加上weights關鍵字。

Aggregate <Sum|Min|Max>:Sum表示取分數之和(默認情況),Min表示取分數最小的,Max表示取分數最大的,使用前要加上Aggregate關鍵字。

18.ZunionStore

ZunionStore destination bunbers key[key....] [weights...]?Aggregate <Sum|Min|Max>]

用法和ZinterStore一樣,只不過求的是合集罷了。

Zset內部編碼

1.ziplist

如果有序集合的元素比較少而且單個元素的體積較小,使用ziplist存儲。

2.skipList

復雜的鏈表,一個節點上有很多的指針,讓查詢時間更短(O(logn))。

Zset應用場景

1.最常見的場景,排行榜系統。

2.還可以使用集合操作來對熱點信息進行排序,例如微博熱度可以使用加權對評論,轉發,瀏覽來進行加權,得出一個分數。

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

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

相關文章

Wps開放平臺v5升級v7上傳實體文件踩坑(Java使用restTemplate)

背景&#xff1a; 最近接到一個老項目需求&#xff0c;之前開發的WPS開放平臺文件&#xff08;商密集成&#xff09;預覽功能因為升級需要重新對接api&#xff0c;新的上傳文件接口踩坑特意記錄一下。 這里出問題的是第二步&#xff0c;請求文件上傳信息 踩坑代碼 調用后403 p…

啥時候上RAG?啥時候上微調?丨實戰筆記

哈嘍&#xff0c;大家好&#x1f44f; 我是阿星&#xff01; 現在很多AI科普文章都會提到微調&#xff0c;RAG。 但是沒有實戰的過的同學可能會問&#x1f914;—— 啥時候用RAG&#xff1f;啥時候用微調呢&#xff1f;有啥區別&#xff1f;不都是讓模型增加知識面的嗎&…

RabbitMQ-基礎篇

前言&#xff1a; 今天開始學RabbitMQ,還是跟著黑馬的課程。 今日所學&#xff1a; RabbitMQ介紹RabbitMQ入門Java客戶端中的MQ 1.RabbitMQ介紹 1.1 什么是RabbitMQ RabbitMQ 是一個開源的消息代理軟件&#xff08;消息隊列中間件&#xff09;&#xff0c;實現了高級消息…

docker-compose配置redis哨兵詳細步驟和配置文件

docker-compose配置redis哨兵詳細步驟和配置文件 目錄結構調整 redis-cluster/ ├── config/ │ ├── master.conf # 主節點配置 │ ├── slave1.conf # 從節點1配置 │ ├── slave2.conf # 從節點2配置 │ ├── sentinel1.…

多模態大語言模型arxiv論文略讀(146)

Exploring Response Uncertainty in MLLMs: An Empirical Evaluation under Misleading Scenarios ?? 論文標題&#xff1a;Exploring Response Uncertainty in MLLMs: An Empirical Evaluation under Misleading Scenarios ?? 論文作者&#xff1a;Yunkai Dang, Mengxi G…

【教程】Linux中限制用戶可以使用的GPU數量 | 附腳本

轉載請注明出處&#xff1a;小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你&#xff0c;歡迎[點贊、收藏、關注]哦~ 目錄 背景說明 設置方法 管理腳本 進階限制 恢復默認組 注意事項 背景說明 比較簡單的方式是使用group來管理權限&#xff0c;這種方式能限制哪些…

90.xilinx復位低電平(一般使用低電平復位)

Xilinx FPGA 中的寄存器&#xff08;Flip-Flop&#xff09;**確實支持異步復位**&#xff0c;但具體實現方式取決于你使用的設計方法&#xff08;HDL 代碼風格或原語實例化&#xff09;。以下是詳細說明&#xff1a; --- ### 1. **Xilinx 寄存器的復位特性** - **同步復位…

NVMe高速傳輸之擺脫XDMA設計10: DMA 控制單元設計

DMA 控制單元負責控制 DMA 傳輸事務&#xff0c; 該單元承擔了 DMA 事務到 NVMe 事務的轉換任務&#xff0c; 使用戶對數據傳輸事務的控制更加簡單快捷。 DMA 控制功能由 DMA寄存器組實現。 DMA 寄存器組包含 DMA 操作寄存器、 DMA 長度寄存器、 DMA 源目的地址寄存器和 DMA 狀…

如何設置電腦定時休眠?操作指南詳解

長時間運行電腦會導致硬件過熱&#xff0c;縮短其使用壽命。定時關機有助于讓硬件得到休息&#xff0c;降低因長時間高負荷工作導致損壞的風險。 它的界面簡潔直觀&#xff0c;功能卻十分實用&#xff0c;涵蓋了定時關機、重啟、注銷、休眠、待機以及鎖定等多種操作。 以設置“…

LeetCode[617]合并二叉樹

思路&#xff1a; 我們合并左右子樹&#xff0c;在遞歸左右子樹的時候&#xff0c;一定要保證左右子樹不為空&#xff0c;如果左子樹為空&#xff0c;那么直接返回右子樹就行了&#xff0c;即使右子樹為空。如果右子樹為空那么直接返回左子樹就行了&#xff0c;這樣判斷完就正常…

Redis 常用五大數據類型

1、Redis 關鍵字&#xff08;Key&#xff09; keys * 查看當前庫所有keyexists [key] 判斷某個key是否存在type [key] 查看當前key的數據類型del [key] 刪除指定的key數據unlink [key] 根據value選擇非阻塞刪除&#xff0c;僅將keys從keyspace元數據中刪除&#xff0c;真正的刪…

大語言模型(LLM)專業術語匯總

1. 訓練與部署 1.1 預訓練 專業&#xff1a;在海量無標注文本&#xff08;如Common Crawl、Wikipedia&#xff09;上通過自監督學習訓練基礎語言模型&#xff0c;學習通用語言表征&#xff08;如GPT-3訓練數據達45TB&#xff09;。通俗&#xff1a;AI的“通識教育階段”&…

【Java Swing 圖形界面編程】JList 列表組件 ① ( JList 組件簡介 | 核心作用 | 關鍵特性 | 基礎用法示例 )

文章目錄 一、JList 組件簡介1、JList 概念簡介2、JList 核心作用3、JList 關鍵特性 二、JList 組件基礎用法示例1、使用 String 數組構建列表項2、使用 Vector 集合構建列表項3、使用 DefaultListModel 構建列表項 一、JList 組件簡介 1、JList 概念簡介 基本概念 : JList 組件…

【小技巧】Python+PyCharm IDE 配置解釋器出錯,環境配置不完整或不兼容。(小智AI、MCP、聚合數據、實時新聞查詢、NBA賽事查詢)

報錯信息如下&#xff1a; [unsupported] Python 3.1 (mcp-calculator-main) (3) C:\Users(xsshu\AppData\Local\Programs\Python\Python313\python.exe [unsupported] Python 3.1 C:\Users\xsshu\AppData\Local\Programs\Python\Python311\python.exe 這條輸出顯示了兩個 Pyth…

Ragflow 前后端登錄邏輯

前端登錄邏輯 路由配置&#xff1a; /login 路由指向 /pages/login 組件。登錄表單使用 Ant Design 的 Form, Input, 和 Button 組件。 登錄表單處理&#xff1a; 使用 useLogin鉤子來處理登錄請求。密碼通過 RSA 加密后再發送到服務器。成功登錄后導航至 /knowledge 頁面。 …

基于圖神經網絡的ALS候選藥物預測模型設計與實現

基于圖神經網絡的ALS候選藥物預測模型設計與實現 一、任務背景與意義 肌萎縮側索硬化癥(ALS)是一種致命的神經退行性疾病,目前尚無有效治愈方法。傳統藥物發現流程耗時長、成本高,而人工智能技術為加速藥物發現提供了新途徑。本文設計并實現了一個基于圖神經網絡(GNN)的…

運維打鐵: 數據加密與備份恢復策略制定

文章目錄 思維導圖一、數據加密1. 加密算法選擇AES 加密示例&#xff08;Python&#xff09;RSA 加密示例&#xff08;Python&#xff09; 2. 密鑰管理3. 加密范圍 二、數據備份1. 備份類型全量備份增量備份差異備份 2. 備份頻率3. 備份存儲位置 三、數據恢復1. 恢復測試2. 恢復…

AIbase MCP服務庫上線:集成服務器、客戶端、案例教程等服務

在當今數字化時代&#xff0c;人工智能技術正以前所未有的速度發展&#xff0c;深刻地改變著我們的生活和工作方式。而要充分發揮AI的強大能力&#xff0c;離不開高效的工具和服務支持。今天&#xff0c;就讓我們來了解一下一個專注于MCP&#xff08;Model Context Protocol&am…

QGIS+CesiumIon

前言 QGIS 3.44中&#xff0c;新增了3D 場景新增地球視圖模式&#xff0c;通過Cesium ion插件&#xff0c;支持谷歌全球傾斜模型的加載顯示。 目錄 1 CesiumIon插件安裝 2 加載谷歌全球傾斜模型 1、CesiumIon插件安裝 點擊菜單【Plugins】->【Manage and Install Plugins】…

TEXT Introduction

我們是誰 美國計算機奧林匹克競賽通過培訓、競賽和國際比賽來促進大學前的計算機學習。 數個教練將會組織、領導、陪伴代表美國參加國際性奧林匹克競賽的學生。 你可以在 USACO 官網了解更多。 USACO 的目標 USACO 的具體目標包括&#xff1a; 訓練美國的隊伍并且在下一屆奧…