1. 程式人生 > >緩存數據庫-redis數據類型和操作(sorted set)

緩存數據庫-redis數據類型和操作(sorted set)

兩個 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)