欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

redis?zrange?與?zrangebyscore的區(qū)別解析

 更新時間:2023年06月20日 09:54:37   作者:FBI?HackerHarry浩  
這篇文章主要介紹了redis?zrange與zrangebyscore的區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

redis zrange 與 zrangebyscore的區(qū)別

前言

想做一個在redis中獲取數(shù)據(jù)時分頁的功能,從網(wǎng)上查找到了zrange和zrangebyscore兩個函數(shù),對于這兩個函數(shù)的理解,在剛剛讀完官方文檔后,還是不太懂:

zrange: “The order of elements is from the lowest to the highest score. Elements with the same score are ordered lexicographically.” https://redis.io/commands/zrange

zrangebyscore:“The elements are considered to be ordered from low to high scores.” https://redis.io/commands/zrangebyscore

嗯?都是依據(jù)socre排序,所以啥區(qū)別?雖說是一個索引一個score,但結(jié)果都是按照score排序,所以到底有啥區(qū)別???

剛接觸的時候,光靠看定義來理解,真的很容易蒙蔽。

所以做個實(shí)驗(yàn),就清楚了。

先說概念上的結(jié)論:

 兩者的區(qū)別,就是一個是“索引”(zrange),一個是“score”(zrangebyscore)!【are you kidding me?!】

實(shí)驗(yàn)

數(shù)據(jù)準(zhǔn)備

在redis中依次執(zhí)行下列語句:

zadd test 1 first
zadd test 10 two
zadd test 8 three
zadd test 7 four
zadd test 2 five
zadd test 1.1 onePointOne
zadd test 2 six
zadd test 8 seven
zadd test 7 sight

對比案例一

我們輸入0 2兩個參數(shù)來查詢(具體命令使用方法請自行查閱官方文檔)

用zrange
命令:

zrange test 1 2 withscores

結(jié)果:

用zrangebyscore
命令

zrangebyscore test 1 2 withscores

結(jié)果:

對比結(jié)論:

zrange是傳入的值是索引 ,因此查詢的值“1”代表是查詢第二個值,也就是說,索引的情況下,索引0是第一個元素。

而zrangebyscore傳入的值就是值本身的含義,也就是“score”

注:確實(shí),官方文檔就說了起始值為0的問題,但這確實(shí)是一個容易犯錯誤的地方。

對比案例二

我們輸入0 7兩個參數(shù)來查詢(具體命令使用方法請自行查閱官方文檔)

用zrange
命令:

zrange test 0 7 withscores

結(jié)果:

用zrangebyscore

命令:

zrangebyscore test 0 7 withscores

結(jié)果:

對比結(jié)論:

同上一個測試

zrange查詢的結(jié)果個數(shù),就是索引的區(qū)間長度(如【0-7】,區(qū)間長度是8,所以查出來8個數(shù)據(jù),當(dāng)然,前提是數(shù)據(jù)不少于8個),
而zrangebyscore由于是用socre來查詢,因此,在準(zhǔn)備的數(shù)據(jù)中,有多少個符合【0,7】區(qū)間的數(shù)據(jù),就會返回多少數(shù)據(jù)。

注:確實(shí),官方文檔就說了起始值為0的問題,但這確實(shí)是一個容易犯錯誤的地方。

總結(jié)

zrange的第一個數(shù)據(jù)是索引為0的數(shù)據(jù),而zrangebyscore的第一個數(shù)據(jù),是score值最小的那個數(shù)據(jù)

zrange傳入的參數(shù)是“索引”的含義,而zrangebyscore就是單純的一個數(shù)值的含義

zrange查詢的結(jié)果個數(shù)<= 查詢區(qū)間長度,也就是說 ,區(qū)間多長,就查詢出多少個結(jié)果出來(數(shù)據(jù)不少于區(qū)間長度,足夠多的情況下),而zrangebyscore的查詢結(jié)果個數(shù)視實(shí)際數(shù)據(jù)而定,也就是凡是符合區(qū)間的數(shù)據(jù),全部查詢出來.

所以在分頁查詢的需求下,zrange可以保證每頁的數(shù)據(jù)量,而zrangebyscore不能保證。

如果有數(shù)據(jù)更新,zrange就會出現(xiàn)數(shù)據(jù)查詢重復(fù)和遺漏的情況。而zrangebyscore卻由于符合條件則全部查詢出來的特性,而不會出現(xiàn)重復(fù)和遺漏。

不理解“重復(fù)和遺漏”是怎么發(fā)生的?自己仔細(xì)思考去吧,實(shí)在不行做個實(shí)驗(yàn),你就明白了,這里我不細(xì)說。

到此這篇關(guān)于redis zrange 與 zrangebyscore的區(qū)別的文章就介紹到這了,更多相關(guān)redis zrange 與 zrangebyscore區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決redis啟動的警告日志問題

    解決redis啟動的警告日志問題

    這篇文章主要介紹了解決redis啟動的警告日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Redis緩存的主要異常及解決方案實(shí)例

    Redis緩存的主要異常及解決方案實(shí)例

    這篇文章主要為大家介紹了Redis緩存的主要異常及解決方案實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 編譯安裝redisd的方法示例詳解

    編譯安裝redisd的方法示例詳解

    這篇文章主要介紹了編譯安裝redisd的方法示例詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Redis利用Pipeline加速查詢速度的方法

    Redis利用Pipeline加速查詢速度的方法

    這篇文章主要給大家介紹了關(guān)于Redis利用Pipeline加速查詢速度的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Redis如何存儲對象與集合示例詳解

    Redis如何存儲對象與集合示例詳解

    redis是一個key-value存儲系統(tǒng)。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希類型)本文介紹了關(guān)于Redis是如何存儲對象與集合的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • 淺談Redis主從復(fù)制以及主從復(fù)制原理

    淺談Redis主從復(fù)制以及主從復(fù)制原理

    在現(xiàn)有企業(yè)中80%公司大部分使用的是redis單機(jī)服務(wù),在實(shí)際的場景當(dāng)中單一節(jié)點(diǎn)的redis容易面臨風(fēng)險。本文將介紹Redis主從復(fù)制以及主從復(fù)制原理。
    2021-05-05
  • 使用redis-plus-plus庫連接redis的實(shí)現(xiàn)方法

    使用redis-plus-plus庫連接redis的實(shí)現(xiàn)方法

    本文主要介紹了使用redis-plus-plus庫連接redis的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Redis和Lua實(shí)現(xiàn)分布式限流器的方法詳解

    Redis和Lua實(shí)現(xiàn)分布式限流器的方法詳解

    這篇文章主要給大家介紹了關(guān)于Redis和Lua實(shí)現(xiàn)分布式限流器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis和Lua具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 阿里云服務(wù)器安裝配置redis的方法并且加入到開機(jī)啟動(推薦)

    阿里云服務(wù)器安裝配置redis的方法并且加入到開機(jī)啟動(推薦)

    這篇文章主要介紹了阿里云服務(wù)器安裝配置redis并且加入到開機(jī)啟動,需要的朋友可以參考下
    2017-12-12
  • Redis內(nèi)存碎片處理實(shí)例詳解

    Redis內(nèi)存碎片處理實(shí)例詳解

    內(nèi)存碎片是redis服務(wù)中分配器分配存儲對象內(nèi)存的時產(chǎn)生的,下面這篇文章主要給大家介紹了關(guān)于Redis內(nèi)存碎片處理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評論