亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

A_start 10, A_end 20
B_start 30, B_end 40

我們將這兩個范圍的起始位置存在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這個值在哪一個范圍中,只需要進行如下的zrangbyscore查找:

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

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

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

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

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

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

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

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

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

相關(guān)文章

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

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

    這篇文章主要給你大家介紹了關(guān)于基于Redis無序集合如何實現(xiàn)禁止多端登錄功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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ì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 淺談Redis安全策略

    淺談Redis安全策略

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

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

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

    淺談Redis中的緩存更新策略

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

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

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

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

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

    解鎖redis鎖的正確姿勢

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

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

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

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

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

最新評論