1. 程式人生 > >Redis數據操作--有序集合

Redis數據操作--有序集合

redis數據操作-有序集合

| Redis 的集合以無序的方式儲存多個各不相同的元素
# 用戶可以快速地向集合添加元素,或者從集合裏面刪除元素,也可以對多個集合
進行集合運算操作,比如計算並集,交集和差集。
| 元素操作
-- 添加元素
    sadd key element [element ...]
    # 將一個或多個元素添加到給定的集合裏面,已經存在於集合的元素會
        自動被忽略,命令返回新添加到集合的元素數量。
-- 移除元素
    srem key element [element ...]
    # 移除集合中的一個或者多個元素,不存在於集合中的元素會自動被忽
    略,命令返回存在並且被移除的元素數量。
-- 檢查給定元素是否存在於集合
    sismember key element
    # 檢查給定的元素是否存在於集合,存在的話返回1;
        如果元素不存在,或者給定的鍵不存在,那麽返回0。
-- 返回集合的大小
    scard key
    # 返回集合包含的元素數量(也即是集合的基數)
-- 返回集合包含的所有元素
    smember key
    # 範湖集合包含的原有元素
    附:當集合的基數比較大時,執行這個命令有可能會造成服務器阻塞,
    將來會介紹更好的方式來叠代集合中的元素。
-- 集合的無序性質
    # 對於相同的一集元素,同一個集合命令可能會返回不同的結果。
    結論:不要使用集合來儲存有序的數據,如果想要儲存有序且重復的值,
    可以使用列表;如果想要儲存有序且無重復的值,可以使用有序集合。
    (投票功能 vote.py), (打標簽功能 tag.py)
-- 從集合裏面隨機地彈出一個元素
    spop key
    # 隨機地從集合中移除並返回一個元素
-- 從集合裏面隨機地返回元素
    srandmember key [count]
    # 如果沒有給定可選的count參數,那麽命令隨機地返回集合中的一個元素。
        如果給定了count參數,那麽:
        ①當count為正數,並且少於集合基數時,命令返回一個包含count個元素
            的數組,數組中的每個元素各不相同;如果count大於或者等於集合基數,
            那麽命令返回整個集合。
        ②當count為負數時,命令返回一個數組,數組中的元素可能會重復出現多次,
            而數組凍得長度為count的絕對值。
    # 與spop不同srandmember不會移除被返回的元素。
    (抽獎程序的API的實現)
| 集合運算
-- 差集運算(兩個交集中,存在於集合A,但不存在於集合B的元素)
    sdiff key [key ...]                        # 返回所有給定集合的差集
    sdiffstore destkey key [key ...] # 將給定集合的差集儲存到destkey
-- 交集運算
    sinter key [key ...]                        # 返回所有給定集合的交集
    sinterstore destkey key [key ...] # 將給定集合的交集儲存到destkey
-- 並集運算
    sunion key [key ...]           # 返回所有給定集合的並集
    sunion key [key ...]           # 將所有給定集合的並集儲存到destkey中
    (共同關註功能), (構建商品篩選功能 item_filter.py)

Redis數據操作--有序集合