###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事件...