9. redis 数据结构-set、zset

1. set

redis中的Set就是一个无序的String集合,集合中的元素不可重复。集合之间可以取交集,并集,差集等。

(1)常用命令

 

 

  • sadd spop srandmember srem smove 都是set的实际操作命令,比如添加啊,删除弹出,不删除弹出,删除,移动之类的: sadd key element [element ...]; spop key; srandmember key;srem key element [element ...]; 。

 

 

 

 

 

 

    Srandmember和spop都是随机从集合取出元素,不同的是后者会删除元素。

  • scard set中的元素个数:scard key

  • sdiff sinter sunion 取差集,交集,并集:sdiff/sinter/sunion key [key ..]。
  • sdiffstore sinterstore sunionstore 取差,交,并以后放到新的set:sdiffstore/sinterstore/sunionstore destination key [key ...]

(2)内部编码

  • intset: 当集合元素都是int且元素个数小于lset-max-ziplist-entries(512 by default)
  • hashtable: 无法满足ziplist的条件时。
  1. 使用场景
  • Tag

2. zset

redis中的zset就是一个有序集合。在set基础上加入了一个score字段,通过利用score和index来进行相关的排序。

(1)常用命令

 

 

 

 

 

 

  • zadd zrem zremrangebyrank zremrangebyscore 有序集合的添加与删除操作,删除分为三种方式,单个和按照区间删除:zadd key score member[score member...]; zrem key member [member ...]; zremrangebyrank key start end(删除指定排名内的升序元素);zremrangebyscore key min max(删除指定分数范围内的成员)。
  • zcard zcount 集合中的元素数量,以及集合区间内的元素数量:zcard key; zcount key score。
  • zrange zrevrange zrank zrevrank zrangebyscore zrevrangebyscore 按照区间返回数据,rev为降序的方式返回: zrange/zrevrange key start end [withscores];zrangebyscore/zrevrangebyscore key min max [withscores] [limit offset count]。

 

 

 

 

 

 

Ps: score可以重复相同score,先入在先

(2)内部编码

  • ziplist: zset elements < zset-max-ziplist-entries(128 by default) && each element value < zset-max-ziplist-value(64 bytes by default).
  • skiplist: 无法满足ziplist的条件时。

(3) 实现

跳跃表

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金士顿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值