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"
版权声明:本文为博主原创文章,未经博主允许不得转载。