日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python 操作redis有序集合

發(fā)布時(shí)間:2025/3/20 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 操作redis有序集合 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#coding:utf8 import redis r =redis.Redis(host="23.226.74.190",port=63279,password="66666666666")

1.Zadd

Zadd 命令用于將一個(gè)或多個(gè)成員元素及其分?jǐn)?shù)值加入到有序集當(dāng)中。
如果某個(gè)成員已經(jīng)是有序集的成員,那么更新這個(gè)成員的分?jǐn)?shù)值,并通過重新插入這個(gè)成員元素,來保證該成員在正確的位置上。
分?jǐn)?shù)值可以是整數(shù)值或雙精度浮點(diǎn)數(shù)。
如果有序集合 key 不存在,則創(chuàng)建一個(gè)空的有序集并執(zhí)行 ZADD 操作。
當(dāng) key 存在但不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。

print r.zadd("1","1",2,"3",3) #輸出的結(jié)果是2 print r.zadd("1","2",2) #輸出的結(jié)果是1 print r.zadd("1","1",1) #輸出的結(jié)果是0 print r.zadd("1","3",4) #輸出的結(jié)果是0 print r.zrange("1",0,-1) #輸出的結(jié)果是 ['1', '2', '3']

2.Zcard

Zcard 命令用于計(jì)算集合中元素的數(shù)量。
當(dāng) key 存在且是有序集類型時(shí),返回有序集的基數(shù)。 當(dāng) key 不存在時(shí),返回 0 。

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' print r.zadd("1","1",1,"3",3) #輸出的結(jié)果是2 print r.zadd("1","2",2) #輸出的結(jié)果是1 print r.zadd("1","2",4) #輸出的結(jié)果是1 print r.zcard(1) #輸出的結(jié)果是3 print r.zcard(2) #輸出的結(jié)果是0

3.Zcount

Zcount 命令用于計(jì)算有序集合中指定分?jǐn)?shù)區(qū)間的成員數(shù)量。分?jǐn)?shù)值在 min 和 max 之間的成員的數(shù)量。

print r.zadd("2","1",1,"3",3) #輸出的結(jié)果是2 print r.zadd("2","2",2) #輸出的結(jié)果是1 print r.zadd("2","1",4) #輸出的結(jié)果是0 print r.zcount("2",min=0,max=5) #輸出的結(jié)果是3 print r.zcount("2",min=0,max=3) #輸出的結(jié)果是2 print r.zcount("2",min=1,max=3) #輸出的結(jié)果是2

4.Zincrby

Zincrby 命令對(duì)有序集合中指定成員的分?jǐn)?shù)加上增量 increment
可以通過傳遞一個(gè)負(fù)數(shù)值 increment ,讓分?jǐn)?shù)減去相應(yīng)的值,比如 ZINCRBY key -5 member ,就是讓 member 的 score 值減去 5 。

當(dāng) key 不存在,或分?jǐn)?shù)不是 key 的成員時(shí), ZINCRBY key increment member 等同于 ZADD key increment member 。

當(dāng) key 不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。
分?jǐn)?shù)值可以是整數(shù)值或雙精度浮點(diǎn)數(shù)。
member 成員的新分?jǐn)?shù)值,以字符串形式表示。

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' print r.zadd("4","1",1,"2",2,"3",3,"4",4) #輸出的結(jié)果是4 print r.zincrby(name=4,value=1,amount=5) #輸出的結(jié)果是6.0 print r.zincrby(name=4,value=2,amount=55) #輸出的結(jié)果是57.0 print r.zrange(name=4,start=0,end=-1,withscores=False) #輸出的結(jié)果是['1', '3', '2', '4']

5.Zinterstore

Zinterstore 命令計(jì)算給定的一個(gè)或多個(gè)有序集的交集,其中給定 key 的數(shù)量必須以 numkeys 參數(shù)指定,并將該交集(結(jié)果集)儲(chǔ)存到 destination 。 默認(rèn)情況下,結(jié)果集中某個(gè)成員的分?jǐn)?shù)值是所有給定集下該成員分?jǐn)?shù)值之和。

print r.zadd("41", "a1", 6, "a2", 2,"a3",5) #輸出的結(jié)果是3 print r.zadd('42', a1=7,b1=10, b2=5) #輸出的結(jié)果是3 # 獲取兩個(gè)有序集合的交集并放入dest集合,如果遇到相同值不同分?jǐn)?shù),則按照aggregate進(jìn)行操作 # aggregate的值為: SUM MIN MAX print r.zinterstore("43",("42","41"),aggregate="MAX") #輸出的結(jié)果是4 print(r.zscan("43")) #輸出的結(jié)果是(0L, [('a1', 7.0)])

6.Zlexcount

Zlexcount 命令在計(jì)算有序集合中指定字典區(qū)間內(nèi)成員數(shù)量。

print r.zadd("6", "a", 1, "b", 2,"c",3) #輸出的結(jié)果是3 print r.zlexcount(name=6,min="-",max="+") #輸出的結(jié)果是3 print r.zadd("6", "e", 4, "f", 5,"d",6) #輸出的結(jié)果是3 print r.zlexcount(name=6,min="-",max="+") #輸出的結(jié)果是6 print r.zlexcount(name=6,min="[a",max="[b") #輸出的結(jié)果是2 print r.zlexcount(name=6,min="[a",max="[f") #輸出的結(jié)果是6 print r.zlexcount(name=6,min="[a",max="[e") #輸出的結(jié)果是4

7.Zrange

Zrange 返回有序集中,指定區(qū)間內(nèi)的成員。
其中成員的位置按分?jǐn)?shù)值遞增(從小到大)來排序。
具有相同分?jǐn)?shù)值的成員按字典序(lexicographical order )來排列。
如果你需要成員按值遞減(從大到小)來排列,請(qǐng)使用 ZREVRANGE 命令。
下標(biāo)參數(shù) start 和 stop 都以 0 為底,也就是說,以 0 表示有序集第一個(gè)成員,以 1 表示有序集第二個(gè)成員,以此類推。
你也可以使用負(fù)數(shù)下標(biāo),以 -1 表示最后一個(gè)成員, -2 表示倒數(shù)第二個(gè)成員,以此類推。

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' print r.zadd("7", "1", 1, "2", 2,"3",3,"4",4,"5",5) #輸出的結(jié)果是5 print r.zrange("7",start=0,end=-1,desc=False) #輸出的結(jié)果是['1', '2', '3', '4', '5'] print r.zrange("7",start=0,end=2,desc=False) #輸出的結(jié)果是['1', '2', '3']

8. Zrangebylex

Zrangebylex 通過字典區(qū)間返回有序集合的成員。

當(dāng)有序集合的所有成員都具有相同的分值時(shí),有序集合的元素會(huì)根據(jù)成員的 值 (lexicographical ordering)來進(jìn)行排序,而這個(gè)命令則可以返回給定的有序集合鍵 key 中, 元素的值介于 min 和 max 之間的成員
對(duì)集合中的每個(gè)成員進(jìn)行逐個(gè)字節(jié)的對(duì)比(byte-by-byte compare), 并按照從低到高的順序, 返回排序后的集合成員。 如果兩個(gè)字符串有一部分內(nèi)容是相同的話, 那么命令會(huì)認(rèn)為較長(zhǎng)的字符串比較短的字符串要大

print r.zadd("8", "a", 1, "b", 2,"c",3) #輸出的結(jié)果是3 print r.zrangebylex(name="8",min="-",max="[c") #輸出的結(jié)果是 ['a', 'b', 'c'] print r.zrangebylex(name="8",min="-",max="(c") #輸出的結(jié)果是 ['a', 'b'] print r.zadd("8", "e", 4, "f", 5,"d",6) #輸出的結(jié)果是3 print r.zrangebylex(name=8,min="[b",max="[f") #輸出的結(jié)果是 ['b', 'c', 'e', 'f', 'd'] print r.zrangebylex(name=8,min="(b",max="[f") #輸出的結(jié)果是 ['c', 'e', 'f', 'd']

9.Zrangebyscore

Zrangebyscore 返回有序集合中指定分?jǐn)?shù)區(qū)間的成員列表。

有序集成員按分?jǐn)?shù)值遞增(從小到大)次序排列。 具有相同分?jǐn)?shù)值的成員按字典序來排列(該屬性是有序集提供的,不需要額外的計(jì)算)。 默認(rèn)情況下,區(qū)間的取值使用閉區(qū)間 (小于等于或大于等于),你也可以通過給參數(shù)前增加 ( 符號(hào)來使用可選的開區(qū)間 (小于或大于)。

print r.zadd("9", "a", 1, "b", 2,"c",3) #輸出的結(jié)果是3 print r.zrangebyscore("9","1","6") #輸出的結(jié)果是['a', 'b', 'c'] print r.zadd("9", "c", 11, "d", 21,"e",32) #輸出的結(jié)果是3 print r.zrangebyscore("9","3","16") #輸出的結(jié)果是['c'] print r.zrangebyscore("9","3","36") #輸出的結(jié)果是['c', 'd', 'e']

10.Zrank

Zrank 返回有序集中指定成員的排名。其中有序集成員按分?jǐn)?shù)值遞增(從小到大)順序排列。

如果成員是有序集 key 的成員,返回 member 的排名。 如果成員不是有序集 key 的成員,返回 None 。

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' print r.zadd("10", "a", 1, "b", 2, "c", 3) # 輸出的結(jié)果是3 print r.zadd("10", "f", 11, "d", 21,"e",32) #輸出的結(jié)果是3 print r.zrank("10","a") #輸出的結(jié)果是0 print r.zrank("10","b") #輸出的結(jié)果是1 print r.zrank("10","e") #輸出的結(jié)果是5 print r.zrank("10","d") #輸出的結(jié)果是4 print r.zrank("10","h") #輸出的結(jié)果是None

11. Zrem

Zrem 命令用于移除有序集中的一個(gè)或多個(gè)成員,不存在的成員將被忽略。

當(dāng) key 存在但不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。

print r.zadd("11", "a", 1, "b", 2, "c", 3) # 輸出的結(jié)果是3 print r.zadd("11", "f", 11, "d", 21,"e",32) #輸出的結(jié)果是3 print r.zrem("11","a") #輸出的結(jié)果是1 print r.zrem("11","f") #輸出的結(jié)果是1 print r.zrem("11","h") #輸出的結(jié)果是0 print r.zrange("11",start=0,end=32) #輸出的結(jié)果是['b', 'c', 'd', 'e'], 其中 a f 已經(jīng)移除掉 print r.zrange("11",start=2,end=32) #輸出的結(jié)果是['d', 'e'], 其中 a f 已經(jīng)移除掉,d e 沒有被包涵

12.Zremrangebylex

Zremrangebylex 命令用于移除有序集合中給定的字典區(qū)間的所有成員。
被成功移除的成員的數(shù)量,不包括被忽略的成員。

print r.zadd("12", "a", 1, "b", 2, "c", 3) # 輸出的結(jié)果是3 print r.zadd("12", "d", 11, "e", 21,"f",32) #輸出的結(jié)果是3 print r.zremrangebylex("12",min="[a",max="[c") #輸出的結(jié)果是3 print r.zrange("12",0,-1) #輸出的結(jié)果是 ['d', 'e', 'f'] 因?yàn)? a,b,c已經(jīng)被移除

13. Zremrangebyrank

Zremrangebyrank 命令用于移除有序集中,指定排名(rank)區(qū)間內(nèi)的所有成員。

# print r.zadd("13", "a", 1, "b", 2, "c", 3) # 輸出的結(jié)果是3 # print r.zadd("13", "d", 8, "e", 21,"f",32) #輸出的結(jié)果是3 # print r.zremrangebyrank(name=13,min=1,max=3) #輸出的結(jié)果是3 # print r.zrange("13","0","-1") #輸出的結(jié)果是['a', 'e', 'f'] 因?yàn)閯h除了 b,c,d

14.Zremrangebyscore

Zremrangebyscore 命令用于移除有序集中,指定分?jǐn)?shù)(score)區(qū)間內(nèi)的所有成員。

print r.zadd("14", "a", 1, "b", 2, "c", 3) #輸出的結(jié)果是3 print r.zadd("14", "d", 8, "e", 21,"f",32) #輸出的結(jié)果是3 print r.zremrangebyscore(name="14",min="1",max="8") #輸出的結(jié)果是4,刪除的a,b,c,d print r.zrange(name="14",start=0,end=-1) #輸出的結(jié)果是 ['e', 'f']

15.Zrevrange

Zrevrange 命令返回有序集中,指定區(qū)間內(nèi)的成員。

其中成員的位置按分?jǐn)?shù)值遞減(從大到小)來排列。
具有相同分?jǐn)?shù)值的成員按字典序的逆序(reverse lexicographical order)排列。
除了成員按分?jǐn)?shù)值遞減的次序排列這一點(diǎn)外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一樣。

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' print r.zadd("15", "a", 1, "b", 2, "c", 3) #輸出的結(jié)果是3 print r.zadd("15", "d", 8, "e", 21,"f",32) #輸出的結(jié)果是3 print r.zrevrange(name="15",start=0,end=-1) #輸出的結(jié)果是['f', 'e', 'd', 'c', 'b', 'a'] print r.zrevrange(name="15",start=1,end=21) #輸出的結(jié)果是['e', 'd', 'c', 'b', 'a'] print r.zrevrange(name="15",start=3,end=21) #輸出的結(jié)果是['c', 'b', 'a']

16.Zrevrangebyscore

Zrevrangebyscore 返回有序集中指定分?jǐn)?shù)區(qū)間內(nèi)的所有的成員。有序集成員按分?jǐn)?shù)值遞減(從大到小)的次序排列。

具有相同分?jǐn)?shù)值的成員按字典序的逆序(reverse lexicographical order )排列。
除了成員按分?jǐn)?shù)值遞減的次序排列這一點(diǎn)外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一樣。

print r.zadd("16", "a", 1, "b", 2, "c", 3) #輸出的結(jié)果是3 print r.zadd("16", "d", 8, "e", 21,"f",32) #輸出的結(jié)果是3 print r.zrevrangebyscore(name="16",max=33,min=0) #輸出的結(jié)果是['f', 'e', 'd', 'c', 'b', 'a'] print r.zrevrangebyscore(name="16",max=20,min=2) #輸出的結(jié)果是['d', 'c', 'b']

17. Zrevrank

Zrevrank 命令返回有序集中成員的排名。其中有序集成員按分?jǐn)?shù)值遞減(從大到小)排序。

排名以 0 為底,也就是說, 分?jǐn)?shù)值最大的成員排名為 0 。
使用 ZRANK 命令可以獲得成員按分?jǐn)?shù)值遞增(從小到大)排列的排名。

print r.zadd("17", "a", 1, "b", 2, "c", 3) #輸出的結(jié)果是3 print r.zadd("17", "d", 4, "e", 5,"f",6) #輸出的結(jié)果是3 print r.zrevrank(name=17,value="a") #輸出的結(jié)果是5 print r.zrevrank(name=17,value="c") #輸出的結(jié)果是3 print r.zrevrank(name=17,value="d") #輸出的結(jié)果是2 print r.zrevrank(name=17,value="h") #輸出的結(jié)果是None

18.Zscore

Zscore 命令返回有序集中,成員的分?jǐn)?shù)值。 如果成員元素不是有序集 key 的成員,或 key 不存在,返回 None 。

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' print r.zadd("18", "a", 1, "b", 2, "c", 3) #輸出的結(jié)果是3 print r.zadd("18", "d", 4, "e", 5,"f",6) #輸出的結(jié)果是3 print r.zscore(name="18",value="a") #輸出的結(jié)果是1.0 print r.zscore(name="18",value="c") #輸出的結(jié)果是3.0 print r.zscore(name="18",value="f") #輸出的結(jié)果是6.0 print r.zscore(name="18",value="h") #輸出的結(jié)果是None

19.Zunionstore

Zunionstore 命令計(jì)算給定的一個(gè)或多個(gè)有序集的并集,其中給定 key 的數(shù)量必須以 numkeys 參數(shù)指定,并將該并集(結(jié)果集)儲(chǔ)存到 destination 。

默認(rèn)情況下,結(jié)果集中某個(gè)成員的分?jǐn)?shù)值是所有給定集下該成員分?jǐn)?shù)值之和 。
保存到 destination 的結(jié)果集的成員數(shù)量。

20.Zscan

Zscan 命令用于迭代有序集合中的元素(包括元素成員和元素分值)返回的每個(gè)元素都是一個(gè)有序集合元素,一個(gè)有序集合元素由一個(gè)成員(member)和一個(gè)分值(score)組成。

print r.zadd("20", "a", 1, "b", 2, "c", 3) #輸出的結(jié)果是3 print r.zscan(name="20") #輸出的結(jié)果是(0L, [('a', 1.0), ('b', 2.0), ('c', 3.0)]) print r.zadd("20", "d", 4, "e", 5,"f",3) #輸出的結(jié)果是3 print r.zscan(name="20") #輸出的結(jié)果是 (0L, [('a', 1.0), ('b', 2.0), ('c', 3.0), ('f', 3.0), ('d', 4.0), ('e', 5.0)])

總結(jié)

以上是生活随笔為你收集整理的Python 操作redis有序集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。