7、交/並/差集
四、疑問
五、總結
不會說全部api,api這東西想用自己help @sorted_set就行了。sorted_set有序且去重,這裡的有序和list型別的有序不同,這裡是指通過score自定義排序。而不是元素先來後到的順序。
索引型別
banana
orange
正向索引01
2反向索引
-3-2
-1
可以發現zadd預設按照score公升序,而不是元素插入順序。
127.0
.0.1
:6380
> zrangebyscore fruit 10201
)2)"banana"
127.0
.0.1
:6380
> zrange fruit 011
)2)"banana"
127.0
.0.1
:6380
> zrevrange fruit 011
)"orange"2)
"banana"
127.0
.0.1
:6380
> zscore fruit banana
"20"
127.0
.0.1
:6380
> zrank fruit banana
(integer)
1127.0
.0.1
:6380
(integer)
0
127.0
.0.1
:6380
> zincrby fruit 12.5 banana
"32.5"
127.0
.0.1
:6380
> zrange fruit 0-1
1)2)
"orange"3)
"banana"
127.0
.0.1
:6380
> zrank fruit banana
(integer)
2
和set有區別,比如union並集操作會把相同元素的score進行相加
union加權重,k1 k2 weights 1 0.5代表第乙個key的score不變,第二個key的元素score除以2(因為權重是0.5),預設不寫每個key的權重都是1,也就是原始score。
比如tom,k1的tom權重是1,score不變,還是60,k2的tom權重是0.5,score是100/2=50,60+50=110還支援乙個聚合操作:
zunionstore unkey1 2 k1 k2 aggregate max
意思是算出k1和k2中重複元素最大的score。不進行相加分數了,只保留最大score。
他能保證有序不重複,他為啥還這麼快?
因為他底層採取了跳表資料結構,可以自行google。
Redis 有序集合 sorted set
redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數 score 卻可以重複。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度...
Redis 有序集合 sorted set
redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數 score 卻可以重複。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度...
Redis 有序集合 sorted set
redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數 score 卻可以重複。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度...