redis:set与zset

发布时间 2023-08-17 16:01:58作者: ShineLe
学习自:Redis 的五种基本数据类型_redis的五种数据类型_喵先森爱吃鱼的博客-CSDN博客

Set

集合,存放一系列无重复元素

 

常用命令

命令

用法

说明

scard

scard K K中元素个数

sadd

sadd K V1 V2 V3 V4 往K中添加数据

srem

srem K V 从K中移除数据
sismember sismember K V 判断V是否在K中
smembers smembers K 返回K中所有的V
srandmember srandmember K n

随机返回n个K中的元素。

当n超过K的大小时,返回全部元素。

n可为负数,此时效果同绝对值

spop spop K n 随机删除n个K中的元素
smove smove K1 K2 V 把K1中的V移动至K2中
sdiff sdiff K1 K2

返回K1和K2的差集(并非补集)

结果与K的顺序有关

sdiffstore sdiffstore K3 K1 K2 求差集,并把结果存入K3
sinter sinter K1 K2 求交集
sinterstore sinterstore K3 K1 K2 求交集,并把结果存入K3
sunion sunion K1 K2 求并集
sunionstore sunionstore K3 K1 K2 求并集,并将结果存入K3

scard:K中元素个数

sadd:往K中加元素

srem:移除K中的某个元素

 

sismember:判断V是不是K的元素

smembers:返回K中全部的V

srandmember:随机取n个元素

spop:随机删除n个元素

smove:把一个K中的V移动到另一个K中

sdiff、sdiffstore:求差集

 

sinter、sinterstore:求交集

 

 

SUNION、SUNIONSTORE:求并集

 

zset或SortedSet

给数据加了Score的Set,可以根据Score对set中的数据进行排序。

底层用一个跳表(SkipList)+hash表实现。

特性

  • 可排序
  • 元素不重复
  • 查询速度快

常用命令

命令

用法(下文S代表V的score)

说明

zcard

 zcard K K中元素数

zadd

zadd K S V 往K中添加V(分数S)

zrem

zrem K V

删除K中的V

zscore

zscore K V

获取K中某个V的S

zrank

zrank K V

获取K中某个V的排名

zcount

zcount K min max 统计S在[min,max]内的元素个数

zincrby

zincrby K n V 让K中某个V的S自增n
zrange zrange K min max

数据排序,根据S从小到大

如果要同时显示S,则要在最后加withscores

zrevrange zrevrange K min max

数据排序,根据S从大到小

zrangebyscore zrangebyscire K min max

安装S排序后,获取S范围[min,max]内的V

zdiff zXXX n K1 K2

求差集

求交集 n为求集合的K的个数

求并集

zinter
zunion
以上所有排名都是升序,如果要降序,则在命令的z后加上rev即可,如上文的zrange和zrevrange

zcard:元素个数

zadd:增加元素并完成排序

zrem:弹出指定元素v

 

zscore:查询K中V的S

 zrange:查询指定下标范围的V(按照分数排序得到的下表)

 zrevrange:与zrange类似,只是这里是降序

zcount:统计K中S在某个区间内的V

默认是[ min , max ],如果要排除某个区间边缘,则加一个(

zrangebyscore:统计S在指定区间内的V,加上withscores可以同时返回score

zrank:返回K中某个V的排名

zrevrank:与zrank相同,但这里排序是逆序(从大到小)

zincrby:让K中指定的V的S加3

 zinter、zinterstore:求交集

zlexcount:计算成员间的成员数量

zrangebylex:返回指定区间内的成员,按S正序排序