1. 程式人生 > >Redis數據操作之無序集合 | Redis

Redis數據操作之無序集合 | Redis

color car filter 一個數 tor pan 商品 沒有 集中

| 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數據操作之無序集合 | Redis