目录
3.5 Redis 集合(Set)
单值多value,且无重复
sadd / smembers / sismember / srem / scard
srandmember / spop
smove
集合运算
应用场景
3.6 Redis有序集合Zset(sorted set)
有序有重复
zadd / zrange / zrevrange
zrangebyscore
zscore / zcard / zrem
zincrby / zcount / zmpop
zrank / zrevrank
应用场景
sadd key member [member ...]
添加元素
sadd set1 1 1 1 2 2 2 3 4 5 #输出5
smembers key
遍历集合中的所有元素
smembers set1 #输出 1 2 3 4 5
sismember key member
判断元素是否在集合中
sismember set1 x #输出 0
sismember set1 1 #输出 1
srem key member [member ...]
删除元素
srem set1 y #输出 0
srem set1 1 #输出 1
smembers set1 #输出 2 3 4 5
scard
获取集合里面的元素个数
scard set1 #输出 4
srandmember key [数字]
从集合中随机展现设置的数字个数元素,元素不删除
sadd set1 1 2 3 4 5 6 7 8 #输出 4
smembers set1 #输出 1 2 3 4 5 6 7 8
srandmember set1 1 #输出 3
srandmember set1 3 #输出 7 2 6
smembers set1 #输出 1 2 3 4 5 6 7 8 对原始数据不破坏
spop key [数字]
从集合中随机弹出一个元素,出一个删一个
spop set1 1 #输出 8
spop set1 1 #输出 2
spop set1 2 #输出 6 4
smembers set1 #输出 1 3 5 7 对原始数据破坏
smove key1 key2
将key1里已经存在的某个值赋给key2
sadd set2 a b c #输出 3
smove set1 set2 7 #输出 1
smember set1 #输出 1 3 5
smember set2 #输出 b a 7 c
集合运算
del set1
del set2
sadd set1 a b c 1 2
sadd set2 1 2 3 a x
集合的差集运算 A - B ,属于A但是不属于B的元素构成的集合
sdiff key [key ...]
sdiff set1 set2 #输出 b c
sdiff set2 set1 #输出 3 x
集合的并集运算 A∪B ,属于A或者属于B的元素构成的集合
sunion key [key ...]
sunion set1 set2 #输出 x a b 1 2 3 c
集合的交集运算 A∩B ,属于A同时属于B的元素构成的集合
sinter key [key ...]
sinter set1 set2 #输出 a 1 2
sintercard numkeys key [key ...] [LIMIT limit]
它不返回结果集,而只返回结果的基数。 返回由所有给定集合的交集产生的集合的基数
基数:去重之后的数字个数
sintercard 2 set1 set2 #输出 3
sintercard 2 set1 set2 limit 1 #输出 1
sintercard 2 set1 set2 limit 2 #输出 2
sintercard 2 set1 set2 limit 3 #输出 3
sintercard 2 set1 set2 limit 4 #输出 3
可能认识的人
在set基础上,每个val值前加一个score分数值
之前set是k1 v1 V2 v3
现在zset是k1 score1 v1 score2 v2
向有序集合中加入一个元素和该元素的分数
zadd key score member [score member ...]
添加元素
zadd zset1 60 v1 70 v2 80 v3 90 v4 100 v5
zrange key start stop [withscores]
按照元素分数从小到大的顺序,返回索引从start到stop之间的所有元素
zrange zset1 0 -1 #输出 v1 v2 v3 v4 v5
zrange zset1 0 -1 withscores # v1 60 v2 70 v3 80 v4 90 v5 100
zrevrange
zrevrange zset1 0 -1 withscores #输出 v5 100 v4 90 v3 80 v2 70 v1 60
zrangebyscore key min max [withscores] [limit offset count]
获取指定分数范围的元素
withscores --> 输出带分数
( --> 不包括
limit 作用是返回限制 ;limit开始下标步 多少步
zrangebyscore zset1 60 90 #输出 v1 v2 v3 v4
zrangebyscore zset1 60 90 withscores #输出 v1 60 v2 70 v3 80 v4 90
zrangebyscore zset1 (60 90 withscores #输出 v2 70 v3 80 v4 90
zrangebyscore zset1 (60 90 withscores limit 0 2 #输出 v2 70 v3 80
zscore key member
获取元素的分数
zscore zset1 v5 #输出 100
zscore zset1 v4 #输出 90
zcard key
获取集合中元素的数量
zcaed zset1 #输出 5
zrem key
某score下对应的value值,作用是删除元素
zrem zset1 v5 #输出 1
zrem zset1 v5 #输出 0
zrange zset1 0 -1 withscores #输出 v1 60 v2 70 v3 80 v4 90
zincrby key increment member
增加某个元素的分数
zincrby zset1 3 v1 #输出 63
zrange zset1 0 -1 withscores #输出 v1 63 v2 70 v3 80 v4 90
zcount key min max
获得指定分数范围内的元素个数
zcount zset1 65 70 #输出 1
zmpop
从键名列表中的第一个非空排序集中弹出一个或多个元素,他们是成员分数对
zmpop 1 zset1 min count 1 #输出 zset1 v1 63
zrank key values值
作用是获得下标值
zrange zset1 0 -1 #输出 v2 v3 v4
zrank zset1 v2 #输出 0
zrank key values值
作用是逆序获得下标值
zrevrank zset1 v2 #输出 2
打赏