天天看點

小貝_redis set/zset類型學習

redis  set、zset類型

一、集合類型

二、檢視set、zset集合類型指令

三、set、zset集合類型執行個體

一、集合類型

       1、redis的集合類型,分為兩種,即有序和無序。

       2、既然是集合類型,是以也要滿足集合的特性即

              a、集合的确定性: 組成集合的元素的性質必須明确,不允許有模棱兩可、含混不清的情況

              b、集合的互異性: 對于一個給定的集合,集合中的元素是互異的”,就是說,“對于一個給定的集合,它的任何兩個元素都是不同的

              c、集合的無序性: 指表示一個集合時,構成這個集合的元素是無序的

       3、集合分類(假設集合A和集合B都是非空)

              a、并集: 去掉集合A和集合B的公共部分的元素,組成新的集合

              b、交集: 擷取集合A和集合B的公告部分的元素,組成新的集合

              c、空集: 空元素的集合

二、檢視set、zset集合類型指令

       1、set類型指令說明

指令名稱 格式 說明
sadd sadd key member 将member元素加入到key當中
srem srem key member 移除集合key中的元素member
smembers smembers key 列舉集合key的所有元素
sismembers sismembers key member 判斷member元素是否是集合key的元素
scard scard key 擷取集合key的元素個數
smove smove source destination member 将member元素從source集合移動到destination集合
spop spop key 移除并傳回集合中的一個随機元素
srangmember srangmember key 傳回集合中的一個随機元素
sinter sinter key key1…

傳回一個集合的全部成員,該集合是所有給定集合的交集。

不存在的key被視為空集。

當給定集合當中有一個空集時,結果也為空集(根據集合運算定律)。

sinterstore sinterstore destination key key1… 此指令等同于sinter,但它将結果儲存到destination集合,而不是簡單地傳回結果集。如果destination集合已經存在,則将其覆寫
sunion sunion key key1

傳回一個集合的全部成員,該集合是所有給定集合的并集。

不存在的key被視為空集

sunionstore sunionstore destination key key1… 此指令等同于sunion,但它将結果儲存到destination集合,而不是簡單地傳回結果集。如果destination已經存在,則将其覆寫
sdiff sdiff key key1 傳回一個集合的全部成員,該集合是所有給定集合的差集 。不存在的key被視為空集
sdiffstore sdiffstore destination key key1… 此指令等同于sdiff,但它将結果儲存到destination集合,而不是簡單地傳回結果集。如果destination集合已經存在,則将其覆寫

       2、zset類型指令說明

指令名稱 格式 說明
zadd zadd key score member

将member元素及其score值加入到有序集key當中。

score值可以是整數值或雙精度浮點數。

zrem zrem key member 移除有序集key中的成員member,如果member不是有序集中的成員,那麼不執行任何動作。當key存在但不是有序集類型時,傳回一個錯誤
zcard zcard key 傳回有序集key的基數
zcount zcount key min max 傳回有序集key中,score值在min和max之間(預設包括score值等于min或max)的成員
zscore zscore key member 傳回有序集key中,成員member的score值
zincrby zincrby key increment member 為有序集key的成員member的score值加上增量increment
zrange zrange key start stop [WITHSCORES] 傳回有序集key中,指定區間内的成員。其中成員的位置按score值遞增(從小到大)來排序
zrevrange zrevrange key start stop [WITHSCORES] 傳回有序集key中,指定區間内的成員。其中成員的位置按score值遞減(從大到小)來排列
zrangebyscore zrangebyscore key min max [WITHSCORES] [LIMIT offset count] 傳回有序集key中,所有score值介于min和max之間(包括等于min或max)的成員。有序內建員按score值遞增(從小到大)次序排列
zrevrangebyscore zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count] 傳回有序集key中,score值介于max和min之間(預設包括等于max或min)的所有的成員。有序內建員按score值遞減(從大到小)的次序排列。
zrank zrank key member 傳回有序集key中成員member的排名。其中有序內建員按score值遞增(從小到大)順序排列。排名以0為底,也就是說,score值最小的成員排名為0。
zrevrank zrevrank key member 傳回有序集key中成員member的排名。其中有序內建員按score值遞減(從大到小)排序。排名以0為底,也就是說,score值最大的成員排名為0。
zremrangebyrank zremrangebyrank key start stop

除有序集key中,指定排名(rank)區間内的所有成員。

區間分别以下标參數start和stop指出,包含start和stop在内

zremrangebyscore zremrangebyscore key min max 移除有序集key中,所有score值介于min和max之間(包括等于min或max)的成員
zinterstore zinterstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 計算給定的一個或多個有序集的交集,其中給定key的數量必須以numkeys參數指定
zunionstore zunionstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 計算給定的一個或多個有序集的并集,其中給定key的數量必須以numkeys參數指定。預設情況下,結果集中某個成員的score值是所有給定集下該成員score值的和

3、set類型指令例子

3.1、為集合user,添加元素‘xiaobei’

127.0.0.1:6379> sadd user xiaobei

(integer) 1

3.2、檢視集合user的所有元素

127.0.0.1:6379>smembers user

1)"xiaobei"

3.3、判斷xiaobei是否是集合user的元素

127.0.0.1:6379>sismember user xiaobei

(integer) 1

3.4、移除集合user的元素 xiaobei

127.0.0.1:6379> sremuser xiaobei

(integer) 1

3.5、判斷集合user的個數

127.0.0.1:6379> sadduser xiaobei

(integer) 1

127.0.0.1:6379> sadduser script-boy

(integer) 1

127.0.0.1:6379>scard user

(integer) 2

3.6、把集合user的元素script-boy移動到集合user1中

127.0.0.1:6379>smove user user1 script-boy

(integer) 1

127.0.0.1:6379>smembers user1

1)"script-boy"

3.7、求集合user和集合user1

127.0.0.1:6379>smembers user

1)"script-boy"

2) "xiaobei"

127.0.0.1:6379>smembers user1

1)"script-boy"

127.0.0.1:6379>sinter user user1

1)"script-boy"

3.8、把集合user和集合user1的交集儲存在user2中

127.0.0.1:6379>sinterstore user2 user1 user

(integer) 1

127.0.0.1:6379>smembers user2

1)"script-boy"

3.9、求集合user和集合user1的并集

127.0.0.1:6379>sunion user user1

1)"script-boy"

2) "xiaobei"

3.10、求集合user和集合user1的并集儲存在user2中

127.0.0.1:6379>sunionstore user2 user user1

(integer) 1

127.0.0.1:6379>smembers user2

1)"script-boy"

3.11、求集合user1對集合user的差集

127.0.0.1:6379>smembers user

1)"script-boy"

127.0.0.1:6379>smembers user1

1)"script-boy"

2) "xiaobei"

127.0.0.1:6379>sdiff user1 user

1) "xiaobei"

3.12、把集合user1對集合user的差集儲存在user2

127.0.0.1:6379>sdiffstore user2 user1 user

(integer) 1

127.0.0.1:6379>smembers user2

1) "xiaobei"