【集合 set 相關命令】
集合的性質: 唯一性,無序性,確定性
注: 在string和link的命令中,可以通過range 來訪問string中的某幾個字符或某幾個元素。但,因爲集合的無序性,無法通過下標或範圍來訪問部分元素.
因此想看元素,要麼隨機選一個,要麼全選
SMEMBERS key
返回集合 key 中的所有成員。不存在的 key 被視爲空集合。
SADD key member [member ...]
將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略。
假如 key 不存在,則創建一個只包含 member 元素作成員的集合。當 key 不是集合類型時,返回一個錯誤。
返回值: 新增成功的元素個數
SREM key member [member ...]
移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略
返回值:被成功移除的元素的數量,不包括被忽略的元素。注:當 key 不是集合類型,返回一個錯誤
SCARD key
返回集合 key 的基數(集合中元素的數量)。
返回集合的元素個數。當 key 不存在時,返回 0 。
SISMEMBER key member
判斷 member 元素是否集合 key 的成員。
返回值:如果 member 元素是集合的成員,返回 1 。如果 member 元素不是集合的成員,或 key 不存在,返回 0
SMOVE source destination member
將 member 元素從 source 集合移動到 destination 集合。SMOVE 是原子性操作。
返回值: 1。如果 source 集合不存在或不包含指定的 member 元素,返回 0 ;當 source 或 destination 不是集合類型時,返回一個錯誤。
SPOP key 移除並返回集合中的一個隨機元素
SRANDMEMBER 返回集合中的一個隨機元素
返回值:被移除的隨機元素。
注:當 key 不存在或 key 是空集時,返回 nil
SINTER key1 [key2 ...]
返回key1 key2 ..keyn的交集,不存在的 key 被視爲空集(結果肯定是空集了)。
返回值:交集成員的列表。
sinterstore dest key1 [key2],返回結果儲存在dest集合中。
SUNION、SUNIONSTORE、SDIFF、SDIFFSTORE
----------------- 單個集合的一些操作 -----------------
sadd key value1 value2 作用: 往集合key中增加元素
備註:由於具有唯一性,所以增加一個已經存在的元素時會返回0.
scard key 作用: 返回集合中元素的個數
smembers key 作用: 返回集中中所有的元素
srandmember key 作用: 返回集合key中,隨機的1個元素.
sismember key value 作用: 判斷value是否存在key集合中,存在是返回1,不存在返回0。
srem key value1 value2 作用: 刪除集合中值爲 value1 value2的元素;返回值: 忽略不存在的元素後,真正刪除掉的元素的個數
spop key 作用: 返回並刪除集合key中1個隨機元素。隨機--體現了無序性
----------------- 兩個集合的一些操作 -----------------
smove key1 key2 value 作用:把key1中的value刪除,並添加到key2集合中.(或者說把key1中的value值移動到key2中)
sinter key1 key2 key3 作用: 求出key1 key2 key3 三個集合中的交集,並返回
sinterstore dest1 key1 key2 key3 作用: 求出key1 key2 key3 三個集合中的交集,並賦給dest1
sunion key1 key2.. Keyn 作用: 求出key1 key2 keyn的並集,並返回
sunionstore dest2 key1 key2.. Keyn 作用: 求出key1 key2 keyn的並集, 並賦給dest2
sdiff key1 key2 key3 作用: 求出key1與key2 key3的差集,即key1-key2-key3
sdiffstore dest3 key1 key2 key3 作用: 求出key1與key2 key3的差集, 並賦給dest3
【order set 有序集合】
(可用於排行榜的數據存儲和獲取)
ZADD key score member [[score member] [score member] ...]
score可爲整數或浮點數,score可重複。返回:成功添加的元素數量
zrem key member1 [member2 ..]
刪除member1,member2。返回:被成功移除的數量
zcard key
返回key中元素的數量
zcount key min max
返回[min,max] 區間內元素的數量
ZRANGE key start stop [WITHSCORES]
返回start->stop的元素
ZSCORE key member
返回成員 member 的 score 值。如果 member 元素不是有序集 key 的成員,或 key 不存在,返回 nil 。
zrevrange key start stop [withscores]
倒序排列後,返回start->stop的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
按分數(升續)排序,取[min,max]之間的值, 並偏移offset取count個
zrevrangebyscore
不解釋
ZRANK key member
返回member的排名,升序比較,從第0名開始
zrevrank key member
不解釋
ZREMRANGEBYRANK key start stop
按排名刪除 start->stop名的元素
zremrangebyscore key start,stop
按分數刪除[start,stop]之間的元素
ZINTERSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]][AGGREGATE SUM|MIN|MAX]
求交集
ZUNIONSTORE destination numkeys key [key ...][WEIGHTS weight [weight ...]][AGGREGATE SUM|MIN|MAX]
求並集
------------------ zadd 添加數據 ------------------
zadd key score1 value1 score2 value2 .. 作用:給有序集合添加元素
[例如] zadd stu 18 lily 19 hmm 20 lilei 21 lilei
------------------ zrange 和 zrevrange 根據名次取數據------------------
zrange key start stop [WITHSCORES]
作用:把集合排序後,返回名次[start,stop]的元素,默認是升續排列。Withscores 是把score也打印出來。
→取出所有數據start=0,stop=-1即可。
→如下案例表示取出第1名到第2名的數據,由小到大排列。
zrevrange key start stop [WITHSCORES]
作用:把集合降序排列,取名字[start,stop]之間的元素。
------------------ zrangebyscore 和 zrevrangebyscore 根據分數取數據------------------
zrangebyscore key min max [withscores] [limit offset N]
作用: 取分數介於min和max之間的,按照分數升續排序;
limit offset N:取score在[min,max]內的元素,並跳過 offset個, 取出N個
→如下案例取分數介於1到20之間(也就是全部)的,跳過第0位,從1位開始取,取兩個,即:limit 1 2.
zrevrangebyscore key max min [withscores] [limit offset N]
作用: 取分數介於max和min之間的,按照分數降續排序;注意這裏是max到min!!
------------------ zrank 和 zrevrank 根據name獲取名次 ------------------
zrank key member 作用:查詢member的排名(升續 從0名開始)
zrevrank key memeber 作用:查詢 member的排名(降續 從0名開始)
→如下案例演示升序情況下poly是第0名,降序情況下是第3名。
------------------ zrem 和 zremrangebyscore 和zremrangebyrank 三種方式刪除元素 ------------------
zrem key value1 value2 .. 作用: 刪除集合中的元素
→刪除name是lily和poly的。
zremrangebyscore key min max 作用: 按照socre來刪除元素,刪除score在[min,max]之間的
→恢復原始數據,刪除score介於10到15的。
zremrangebyrank key start end 作用: 按排名刪除元素,刪除名次在[start,end]之間的
→恢復原始數據,刪除名次介於第0名到第2名的。
------------------ zcard 和 zcount 統計數量 ------------------
zcard key 作用:返回元素個數
zcount key min max 作用:返回分數在 [min,max] 區間內元素的數量
zinterstore destination numkeys key1 [key2 ...]
[WEIGHTS weight [weight ...]]
[AGGREGATE SUM|MIN|MAX]
求key1,key2的交集,key1,key2的權重分別是 weight1,weight2
聚合方法用: sum |min|max
聚合的結果,保存在dest集合內
注意: weights ,aggregate如何理解?
答: 如果有交集, 交集元素又有socre,score怎麼處理? Aggregate sum->score相加 , min 求最小score, max 最大score
另: 可以通過weigth設置不同key的權重, 交集時,socre * weights
【情景設置】lisi買了3只cat、5只dog、6只horse;wang買了2只cat、6只dog、8只horse、1只donkey。取兩者的交集並存儲在報表裏。
ZADD lisi 3 cat 5 dog 6 horse
ZADD wang 2 cat 6 dog 8 horse 1 donkey
ZINTERSTORE result 2 lisi wang
取最小的和最大的,加上 aggregate min / aggregate max
加上權重 weights,相當於翻多少倍:
zunionstore destination numkeys key1 [key2 ...]
[WEIGHTS weight [weight ...]]
[AGGREGATE SUM|MIN|MAX]
取並集,和上面類似。