Redis的sorted set型別核心知識

2021-10-04 07:23:41 字數 1851 閱讀 9652

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 卻可以重複。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度...