redisview如何查詢 redis實現區間查詢

2021-10-13 11:32:18 字數 1163 閱讀 4965

###redis實現區間查詢

在實際開發中經常遇到這樣需求:服務端對於客戶端不同的版本區間會做些不同的配置,那麼客戶端乙個版本過來怎麼快速的定位是屬於哪個版本區間呢?可以利用`sorted sets`的`zrangebyscore`命令。

zadd myset 1011 v1_start

zadd myset 1015 v1_end

zadd myset 1018 v2_start

zadd myset 1023 v2_end

如上我們像myset裡插入了4條資料,代表的意思是版本區間v1是從1011-1015版本,版本區間v2是從1018-1023版本。

注:redis的sorted sets需要score必須為float型,所以這裡需要對版本號做乙個等價的轉換。

那麼我現在如何判斷1014版本屬於哪個區間呢,使用zrangebyscore如下操作:

zrangebyscore myset 1014 +inf limit 0 1

1)v1_end

返回v1_end說明1014屬於版本區間1,上面的這個命令的意思是在myset中查詢第乙個score值大於等於1014的member,如果我們查詢乙個不在區間內的版本,比如1016:

zrangebyscore myset 1014 +inf limit 0 1

1)v2_start

返回v2_start說明它不已有的版本區間內。

關於該命令的具體用法可以看這裡[這裡][1]。

不過這種用法不適合那些區間之間存在重疊的場景。

###實現乙個hash裡不同的field擁有不同expire的場景

目前redis不支援這個特性,這是redis的設計原則決定的。可以在hash中每個field對應的value本身含有時間的資訊,讓應用自己去理解和處理。

![2]

###在redis裡維護自增長的主鍵

有時候可能需要在redis的多個資料結構之間維護乙個類似關係型資料庫中的自增長主鍵,可以利用sorted sets的zincrby

zincrby myset 1 config_no

1)2上面的意思是將myset中的config_no的score值加1,讓key不存在或member不存在時上面的命令相當於:

zadd myset 1 config_no

1)1[1]:

[2]:

Python爬蟲筆記之re查詢

記錄利用re查詢元素的常用方法。a z a z 由字母組成 0 9 由數字組成 d 整數 u4e00 u9fa 中文字元 25 0 5 2 0 4 d 1 d 1 9 d 0 255,由大到小分段 re.search pattern,string,flags 0 返回第乙個查詢結果 match物件 ...

python使用re進行字串查詢和替換

函式 說明re.match pat,s 只從字串s的頭開始匹配,比如 123 12345 匹配上了,而 123 01234 就是沒有匹配上,沒有匹配上返回none,匹配上返回matchobject re.search pat,s 從字串s的任意位置都進行匹配,比如 123 01234 就是匹配上了,...

如何查詢spid

死鎖可以查一下 1 sp who 或 sp who2 2 select from sysprocesses where blocked 0 3 企業管理器 伺服器 管理工具 活動 當前活動 然後把他kill掉。程序資訊中,如果發現旁邊有乙個鎖狀的圖示,就表明這個程序是死鎖,kill掉 4 sql事件...