緩存數據庫-redis數據類型和操作(sorted set)
阿新 • • 發佈:2017-07-30
兩個 ring can 哈希 不同 規則 end card 通過
一:Redis 有序集合(sorted set)
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重復。
集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
二:有序集合常用操作
1)zadd(name, *args, **kwargs) 在name對應的有序集合中添加元素
2)zcard(name) 獲取name對應的有序集合元素的數量
3)zcount(name, min, max) 獲取name對應的有序集合中分數 在 [min,max] 之間的個數
4)zincrby(name, value, amount) 自增name對應的有序集合的 name 對應的分數
5)zrange( name, start, end, desc=False, withscores=False, score_cast_func=float) 按照索引範圍獲取name對應的有序集合的元素
# 參數:
# name,redis的name
# start,有序集合索引起始位置(非分數)
# end,有序集合索引結束位置(非分數)
# desc,排序規則,默認按照分數從小到大排序
# withscores,是否獲取元素的分數,默認只獲取元素的值
# score_cast_func,對分數進行數據轉換的函數
6)zrank(name, value) 獲取某個值在 name對應的有序集合中的排行(從 0 開始)
7)zrem(name, values) 刪除name對應的有序集合中值是values的成員
9)zremrangebyrank(name, min, max) 根據排行範圍刪除
10)zremrangebyscore(name, min, max) 根據分數範圍刪除
11)zscore(name, value) 獲取name對應有序集合中 value 對應的分數
12)zinterstore(dest, keys, aggregate=None) 獲取兩個有序集合的交集,如果遇到相同值不同分數,則按照aggregate進行操作
13)zunionstore(dest, keys, aggregate=None) 獲取兩個有序集合的並集,如果遇到相同值不同分數,則按照aggregate進行操作
14)zscan(name, cursor=0, match=None, count=None, score_cast_func=float) 緩存數據庫-redis數據類型和操作(sorted set)