Redis常用數據結構--Zset

Zset

  • ZADD
  • ZCARD
  • ZCOUNT
  • ZRANGE/ZREVRANGE
  • ZRANGEBYSCORE
  • ZPOPMAX/ZPOPMIN
  • BZPOPMAX/BZPOPMIN
  • ZRANK/ZREVRANK
  • ZSCORE
  • ZREM
  • ZREMRANGEBYRANK
  • ZREMRANGEBYSCORE
  • ZINCRBY
  • ZINTERSTORE/ZUNIONSTORE
  • 內部編碼
  • 使?場景

ZADD

添加或者更新指定的元素以及關聯的分數到 zset 中,分數應該符合 double 類型,+inf/-inf 作為正負極限也是合法的
ZADD 的相關選項:

  • XX:僅僅?于更新已經存在的元素,不會添加新元素。
  • NX:僅?于添加新元素,不會更新已經存在的元素。
  • CH:默認情況下,ZADD 返回的是本次添加的元素個數,但指定這個選項之后,就會還包含本次更新的元素的個數。
  • INCR:此時命令類似 ZINCRBY 的效果,將元素的分數加上指定的分數。此時只能指定?個元素和分數。
ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member...]

時間復雜度:O(log(N))

ZCARD

獲取?個 zset 的基數(cardinality),即 zset 中的元素個數

 ZCARD key

時間復雜度:O(1)

ZCOUNT

返回分數在 min 和 max 之間的元素個數,默認情況下,min 和 max 都是包含的

 ZCOUNT key min max

時間復雜度:O(log(N))

ZRANGE/ZREVRANGE

返回指定區間?的元素,分數按照升序 / 降序。帶上 WITHSCORES 可以把分數也返回

ZRANGE(ZREVRANGE) key start stop [WITHSCORES]

時間復雜度:O(log(N)+M)

ZRANGEBYSCORE

返回分數在 min 和 max 之間的元素,默認情況下,min 和 max 都是包含的

ZRANGEBYSCORE key min max [WITHSCORES]

時間復雜度:O(log(N)+M)

ZPOPMAX/ZPOPMIN

刪除并返回分數最? / 最低的 count 個元素

 ZPOPMAX(ZPOPMIN) key [count]

時間復雜度:O(log(N) * M)

BZPOPMAX/BZPOPMIN

ZPOPMAX / ZPOPMIN的阻塞版本

 BZPOPMAX(BZPOPMIN) key [key ...] timeout

時間復雜度:O(log(N))

ZRANK/ZREVRANK

返回指定元素的排名,升序 / 降序

ZRANK(ZREVRANK) key member

時間復雜度:O(log(N))

ZSCORE

返回指定元素的分數

ZSCORE key member

時間復雜度:O(1)

ZREM

刪除指定的元素

ZREM key member [member ...]

時間復雜度:O(M*log(N))

ZREMRANGEBYRANK

按照排序,升序刪除指定范圍的元素,左閉右閉(下標)

ZREMRANGEBYRANK key start stop

時間復雜度:O(log(N)+M)

ZREMRANGEBYSCORE

按照分數刪除指定范圍的元素,左閉右閉

ZREMRANGEBYSCORE key min max

時間復雜度:O(log(N)+M)

ZINCRBY

為指定的元素的關聯分數添加指定的分數值

ZINCRBY key increment member

時間復雜度:O(log(N))

ZINTERSTORE/ZUNIONSTORE

求出給定有序集合中元素的交集 / 并集并保存進?標有序集合中,在合并過程中以元素為單位進?合并,元素對應的分數按照不同的聚合?式和權重得到新的分數

ZINTERSTORE(ZUNIONSTORE) destination numkeys key [key ...] [WEIGHTS weight[weight ...]] [AGGREGATE <SUM | MIN | MAX>]

時間復雜度:O(NK)+O(Mlog(M)) N 是輸?的有序集合中, 最?的有序集合的元素個數; K 是輸?了 ?個有序集合; M 是最終結果的有序集合的元素個數.

內部編碼

有序集合類型的內部編碼有兩種:

  • ziplist(壓縮列表):當有序集合的元素個數?于 zset-max-ziplist-entries 配置(默認 128 個), 同時每個元素的值都?于 zset-max-ziplist-value 配置(默認 64 字節)時,Redis 會? ziplist 來作 為有序集合的內部實現,ziplist 可以有效減少內存的使?。
  • skiplist(跳表):當 ziplist 條件不滿?時,有序集合會使? skiplist 作為內部實現,因為此時 ziplist 的操作效率會下降。

使?場景

有序集合?較典型的使?場景就是排?榜系統。例如常?的?站上的熱榜信息,榜單的維度可能是多??的:按照時間、按照閱讀量、按照點贊量。本例中我們使?點贊數這個維度,維護每天的熱榜

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

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

相關文章

如何在 Angular 測試中使用 spy

簡介 Jasmine spy 用于跟蹤或存根函數或方法。spy 是一種檢查函數是否被調用或提供自定義返回值的方法。我們可以使用spy 來測試依賴于服務的組件&#xff0c;并避免實際調用服務的方法來獲取值。這有助于保持我們的單元測試專注于測試組件本身的內部而不是其依賴關系。 在本…

空調壓縮機補充潤滑油的方法

空調壓縮機補充潤滑油的方法有三種&#xff0c;從吸氣截止閥旁邊通孔吸入&#xff0c;從加油孔中加入&#xff0c;從曲軸箱下部加入&#xff0c;具體操作步驟如下&#xff1a; 1關閉吸氣截止閥&#xff0c;啟動壓縮機幾分鐘&#xff0c;將曲軸箱中制冷劑排入冷凝器&#xff0c…

vue2結合electron開發桌面端應用

一、Electron是什么&#xff1f; Electron是一個使用 JavaScript、HTML 和 CSS 構建桌面應用程序的框架。 嵌入 Chromium 和 Node.js 到 二進制的 Electron 。允許您保持一個 JavaScript 代碼代碼庫并創建可在Windows、macOS和Linux上運行的跨平臺應用 。 Electron 經常與 Ch…

scrapy 中間件

就是發送請求的時候&#xff0c;會經過&#xff0c;中間件。中間件會處理&#xff0c;你的請求 下面是代碼&#xff1a; # Define here the models for your spider middleware # # See documentation in: # https://docs.scrapy.org/en/latest/topics/spider-middleware.html…

【快速上手ProtoBuf】基本使用

文章目錄 1 :peach:初識 ProtoBuf:peach:1.1 :apple:序列化概念:apple:1.2 :apple:ProtoBuf 是什么:apple:1.3 :apple:ProtoBuf 的使用特點:apple: 2 :peach:創建 .proto ?件:peach:3 :peach:編譯 .proto 文件:peach:3 :peach:序列化與反序列化的使用:peach: 1 &#x1f351;初…

洛谷 2036.PERKET

采用遞歸法的方式進行題解。 思路&#xff1a;首先我們知道在n種材料當中&#xff0c;我們需要從中選擇至少有一種得配料才行。也就是說&#xff0c;我們選擇的配料數目是自己決定的&#xff0c;而不是那種組合型得對于你有要求的組合型遞歸方式。 所以我們會想到用指數型得遞…

(五)網絡優化與超參數選擇--九五小龐

網絡容量 網絡中神經單元數越多&#xff0c;層數越多&#xff0c;神經網路的擬合能力越強。但是訓練速度&#xff0c;難度越大&#xff0c;越容易產生過擬合。 如何選擇超參數 所謂超參數&#xff0c;也就是搭建神經網路中&#xff0c;需要我們自己去選擇&#xff08;不是通…

LeetCode 刷題 [C++] 第45題.跳躍游戲 II

題目描述 給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。 每個元素 nums[i] 表示從索引 i 向前跳轉的最大長度。換句話說&#xff0c;如果你在 nums[i] 處&#xff0c;你可以跳轉到任意 nums[i j] 處: 0 < j < nums[i]i j < n 返回到達 nums[n …

遞歸函數(c++題解)

題目描述 對于一個遞歸函數w(a, b, c)。 如果a < 0 or b < 0 or c < 0就返回值1。 如果a > 20 or b > 20 or c > 20就返回W(20,20,20)。 如果a < b并且b < c 就返回w(a, b, c ? 1) w(a, b ? 1, c ? 1) ? w(a, b ? 1, c)&#xff0c; 其它別…

計算機網絡知多少-第1篇

一、 從輸入URL到頁面展示到底發生了什么&#xff1f; 1. 首先瀏覽器會查看電腦本地緩存&#xff0c;如果有直接返回&#xff0c;否則需要進行下一步的網絡請求。 2. 在網絡請求之前&#xff0c;需要先進行DNS解析&#xff0c;來找到請求域名的ip地址。如果是HTTPS請求&#…

【C語言】熟悉文件基礎知識

歡迎關注個人主頁&#xff1a;逸狼 創造不易&#xff0c;可以點點贊嗎~ 如有錯誤&#xff0c;歡迎指出~ 文件 為了數據持久化保存&#xff0c;使用文件&#xff0c;否則數據存儲在內存中&#xff0c;程序退出&#xff0c;內存回收&#xff0c;數據就會丟失。 程序設計中&…

微信小程序,h5端自適應登陸方式

微信小程序端只顯示登陸(獲取opid),h5端顯示通過賬戶密碼登陸 例如: 通過下面的變量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

Git 查看提交歷史

命令說明git log查看歷史提交記錄git blame (file)以列表形式查看指定文件的歷史修改記錄 git log 在使用 Git 提交了若干更新之后&#xff0c;又或者克隆了某個項目&#xff0c;想回顧下提交歷史&#xff0c;我們可以使用 git log 命令查看。 git log 命令用于查看 Git 倉庫中…

LIN基礎:從LIN Frame開始

目錄&#xff1a; 1、LIN的網絡拓撲 2、LIN Frame 1&#xff09;Header 2&#xff09;Response 3、LIN的通信規則 1&#xff09;LIN的發送行為示例 2&#xff09;LIN的接收行為示例 雖然LIN總線的通信速率不高&#xff0c;工程中&#xff0c;最高的速率也就19200bps。…

c語言extern關鍵字

extern 是C和C中的關鍵字&#xff0c;用于聲明一個變量或函數的存在&#xff0c;但不進行定義。 它通常用于在一個源文件中引用另一個源文件中定義的變量或函數。 例如&#xff0c;extern int x; 表示 x 是一個整數變量&#xff0c;但它的實際定義將在其他文件中。在引用它的文…

StarRocks——Stream Load 事務接口實現原理

目錄 前言 一、StarRocks 數據導入 二、StarRocks 事務寫入原理 三、InLong 實時寫入StarRocks原理 3.1 InLong概述 3.2 基本原理 3.3 詳細流程 3.3.1 任務寫入數據 3.3.2 任務保存檢查點 3.3.3 任務如何確認保存點成功 3.3.4 任務如何初始化 3.4 Exactly Once 保證…

Leetcode - 周賽386

目錄 一&#xff0c;3046. 分割數組 二&#xff0c;3047. 求交集區域內的最大正方形面積 三&#xff0c;3048. 標記所有下標的最早秒數 I 四&#xff0c;3049. 標記所有下標的最早秒數 II 一&#xff0c;3046. 分割數組 將題目給的數組nums分成兩個數組&#xff0c;且這兩個…

探索RedisJSON:將JSON數據力量帶入Redis世界

探索RedisJSON&#xff1a;將JSON數據力量帶入Redis世界 當我們談論數據存儲和查詢時&#xff0c;Redis和JSON都是無法忽視的重要角色。Redis以其高效的鍵值存儲、快速的讀/寫速度、以及豐富的數據結構贏得了開發者的喜愛。而JSON&#xff0c;作為一種輕量級的數據交換格式&am…

「Vue3系列」Vue3 條件語句/循環語句

文章目錄 一、Vue3 條件語句1. v-if2. v-else-if 和 v-else3. v-show4. 使用計算屬性進行條件渲染5. v-if與v-show比較v-ifv-show性能考慮使用場景 二、Vue3 循環語句1. 遍歷數組2. 遍歷對象3. 使用索引4. 注意事項 三、相關鏈接 一、Vue3 條件語句 在 Vue 3 中&#xff0c;你…

盲人出行:科技創造美好的未來

在繁忙的都市中&#xff0c;我每天都要面對許多挑戰&#xff0c;盲人出行安全保障一直難以得到落實。我看不見這個世界&#xff0c;只能依靠觸覺和聽覺來感知周圍的一切。然而&#xff0c;我從未放棄過對生活的熱愛和對未來的憧憬。在一次機緣巧合下&#xff0c;我認識了一款名…