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

Redis中實(shí)現(xiàn)查找某個(gè)值的范圍

 更新時(shí)間:2015年06月24日 09:09:04   投稿:junjie  
這篇文章主要介紹了Redis中實(shí)現(xiàn)查找某個(gè)值的范圍,本文的題引來了Redis作者Salvatore Sanfilippo(@antirez)的回答,比較經(jīng)典,需要的朋友可以參考下

本文來自Redis在Google Group上的一個(gè)問題,有一位同學(xué)發(fā)貼求助,說要解決如下的一個(gè)問題:他有一個(gè)IP范圍對(duì)應(yīng)地址的列表,現(xiàn)在需要給出一個(gè)IP的情況下,迅速的查找到這個(gè)IP在哪個(gè)范圍,也就是要判斷此IP的所有地。這個(gè)問題引來了Redis作者Salvatore Sanfilippo(@antirez)的回答。解答如下:

例如有下面兩個(gè)范圍,10-20和30-40

復(fù)制代碼 代碼如下:

A_start 10, A_end 20
B_start 30, B_end 40

我們將這兩個(gè)范圍的起始位置存在Redis的Sorted Sets數(shù)據(jù)結(jié)構(gòu)中,基本范圍起始值作為score,范圍名加start和end為其value值:

復(fù)制代碼 代碼如下:

redis 127.0.0.1:6379> zadd ranges 10 A_start
(integer) 1
redis 127.0.0.1:6379> zadd ranges 20 A_end
(integer) 1
redis 127.0.0.1:6379> zadd ranges 30 B_start
(integer) 1
redis 127.0.0.1:6379> zadd ranges 40 B_end
(integer) 1

這樣數(shù)據(jù)在插入Sorted Sets后,相當(dāng)于是將這些起始位置按順序排列好了。

現(xiàn)在我需要查找15這個(gè)值在哪一個(gè)范圍中,只需要進(jìn)行如下的zrangbyscore查找:

復(fù)制代碼 代碼如下:

redis 127.0.0.1:6379> zrangebyscore ranges (15 +inf LIMIT 0 1
1) "A_end"

這個(gè)命令的意思是在Sorted Sets中查找大于15的第一個(gè)值。(+inf在Redis中表示正無窮大,15前面的括號(hào)表示>15而非>=15)

查找的結(jié)果是A_end,由于所有值是按順序排列的,所以可以判定15是在A_start到A_end區(qū)間上,也就是說15是在A這個(gè)范圍里。至此大功告成。

當(dāng)然,如果你查找到的是一個(gè)start,比如咱們用25,執(zhí)行下面的命令

復(fù)制代碼 代碼如下:

redis 127.0.0.1:6379> zrangebyscore ranges (25 +inf LIMIT 0 1
1) "B_start"

返回結(jié)果表明其下一個(gè)節(jié)點(diǎn)是一個(gè)start節(jié)點(diǎn),也就是說25這個(gè)值不處在任何start和end之間,不屬于任何范圍。

當(dāng)然,這個(gè)例子僅適用于類似上面的IP范圍查找的案例,因?yàn)檫@些值范圍之間沒有重合。如果是有重合的情況,這個(gè)問題本身也就變成了一個(gè)一對(duì)多的問題。好吧,如果真的是有重合的范圍,我們又當(dāng)如何解決呢?歡迎讀者同學(xué)你來挑戰(zhàn)。

相關(guān)文章

  • 基于Redis無序集合如何實(shí)現(xiàn)禁止多端登錄功能

    基于Redis無序集合如何實(shí)現(xiàn)禁止多端登錄功能

    這篇文章主要給你大家介紹了關(guān)于基于Redis無序集合如何實(shí)現(xiàn)禁止多端登錄功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Redis未授權(quán)訪問配合SSH key文件利用詳解

    Redis未授權(quán)訪問配合SSH key文件利用詳解

    這篇文章主要給大家介紹了關(guān)于Redis未授權(quán)訪問配合SSH key文件利用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 淺談Redis安全策略

    淺談Redis安全策略

    Redis 提供了諸多安全策略,比如為了保證數(shù)據(jù)安全,提供了設(shè)置密碼的功能。本文就詳細(xì)的介紹了一下Redis安全策略,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-11-11
  • Redis集群節(jié)點(diǎn)通信過程/原理流程分析

    Redis集群節(jié)點(diǎn)通信過程/原理流程分析

    這篇文章主要介紹了Redis集群節(jié)點(diǎn)通信過程/原理,詳細(xì)介紹了Cluster(集群)的節(jié)點(diǎn)通信的流程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 淺談Redis中的緩存更新策略

    淺談Redis中的緩存更新策略

    這篇文章主要介紹了淺談Redis中的緩存更新策略,CacheAsidePatter是我們比較常用的緩存更新策略,其由緩存調(diào)用者在更新數(shù)據(jù)庫時(shí),在業(yè)務(wù)邏輯中設(shè)置緩存更新,需要的朋友可以參考下
    2023-08-08
  • Redis分布式緩存:微信搶紅包解決方案

    Redis分布式緩存:微信搶紅包解決方案

    微信搶紅包已經(jīng)在我們生活中很常見的場(chǎng)景了,特別是年底公司開年會(huì)和春節(jié)2個(gè)時(shí)間段。本文主要介紹了通過Redis實(shí)現(xiàn)微信搶紅包功能,感興趣的小伙伴可以了解一下
    2021-12-12
  • 詳解Redis中Lua腳本的應(yīng)用和實(shí)踐

    詳解Redis中Lua腳本的應(yīng)用和實(shí)踐

    這篇文章主要介紹了詳解Redis中Lua腳本的應(yīng)用和實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 解鎖redis鎖的正確姿勢(shì)

    解鎖redis鎖的正確姿勢(shì)

    這篇文章主要為大家詳細(xì)介紹了解鎖redis鎖的正確姿勢(shì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 啟動(dòng)redis出現(xiàn)閃退情況的解決辦法

    啟動(dòng)redis出現(xiàn)閃退情況的解決辦法

    最近使用Redis遇到啟動(dòng)閃退的問題,查閱資料后在一位大神的文章中找到了答案,這篇文章主要給大家介紹了關(guān)于啟動(dòng)redis出現(xiàn)閃退情況的解決辦法,需要的朋友可以參考下
    2023-11-11
  • redis在php中常用的語法【推薦】

    redis在php中常用的語法【推薦】

    string是redis最基本的類型,而且string類型是二進(jìn)制安全的。這篇文章主要介紹了redis在php中常用的語法,需要的朋友可以參考下
    2018-08-08

最新評(píng)論