9. redis 数据结构-set、zset

1. set

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

(1)常用命令

 9. redis 数据结构-set、zset_第1张图片

 9. redis 数据结构-set、zset_第2张图片

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

 

9. redis 数据结构-set、zset_第3张图片 

 9. redis 数据结构-set、zset_第4张图片

9. redis 数据结构-set、zset_第5张图片 

9. redis 数据结构-set、zset_第6张图片 

 

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

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

9. redis 数据结构-set、zset_第7张图片

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

9. redis 数据结构-set、zset_第8张图片

(2)内部编码

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

2. zset

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

(1)常用命令

9. redis 数据结构-set、zset_第9张图片 

9. redis 数据结构-set、zset_第10张图片 

9. redis 数据结构-set、zset_第11张图片 9. redis 数据结构-set、zset_第12张图片9. redis 数据结构-set、zset_第13张图片

 9. redis 数据结构-set、zset_第14张图片

9. redis 数据结构-set、zset_第15张图片 

9. redis 数据结构-set、zset_第16张图片 

  • 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]。

9. redis 数据结构-set、zset_第17张图片 

9. redis 数据结构-set、zset_第18张图片 

9. redis 数据结构-set、zset_第19张图片 

9. redis 数据结构-set、zset_第20张图片 

9. redis 数据结构-set、zset_第21张图片 

9. redis 数据结构-set、zset_第22张图片 

9. redis 数据结构-set、zset_第23张图片

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

9. redis 数据结构-set、zset_第24张图片

(2)内部编码

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

9. redis 数据结构-set、zset_第25张图片

(3) 实现

跳跃表

你可能感兴趣的:(Redis学习,redis学习之路)