一、列表、集合、有序集合三者异同点
              | 数据结构 | 是否允许重复元素 | 是否有序 | 有序实现方式 | 应用场景 | 
               | 列表 | 是 | 是 | 索引下标 | 时间轴/消息队列 | 
         | 集合 | 否 | 否 | 无 | 标签社交 | 
         | 有序集合 | 否 | 是 | 分值 | 排行榜系统、社交等 | 
     
 二、命令
  1.集合内
  (1)添加成员
  		zadd key score member [score member ...]
		返回结果代表成功添加的成员个数
                         
               | nx | member必须不存在,才可以设置成功,用于添加 | 
         | xx | member必须存在,才可以设置成功,用于添加 | 
         | ch | 返回此次操作后,有序集合元素和分数发生变化的个数 | 
         | incr | 对score做增加,相当于后面介绍的zincrby | 
     
    - 有序集合相比集合提供了排序字段,但是也产生了代价,zadd的时间复杂度为O(log(n)),sadd的时间复杂度为O(1)  
(2)计算成员个数
  zcard key
时间复杂度O(1)
  (3)计算某个成员的分数
  zscore key member
如果成员不存在,则返回nil
  (4)计算成员的排名
  zrank key member
zrevrank key member
zrank 是从分数从低到高返回排名,zrevrank反之
  (5)删除成员
  zrem key member [member ...]
返回结果为成功删除的个数
  (6)增加成员分数
  zincrby key increment member
  (7)返回指定排名范围的成员
  zrange key start end [withscores]
zrevrange key start end [withscores]
  (8)返回指定分数范围的成员
  zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores] [limit offset count]
同时min和max还支持开区间(小括号)和闭区间(中括号),-inf +inf分别代表无限小和无限大
  (9)返回指定分数范围成员个数
  zcount key min max
  (10)删除指定排名内的升序元素
  zremrangebyrank key start end
  (11)删除指定分数范围的成员
  zremrangebyscore key min max 
  2.集合间操作
  (1)交集
  zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum | min | max]
     - destination 交集计算结果保存到这个键   
- numkeys 需要做交集计算键的个数   
- key [key …] 需要做交集计算的键   
- weights weight [weight …] 每个键的权重,在做交集计算时,每个键中的每个member会将自己分数乘以这个权重,每个键的权重默认是1   
- aggregate sum | min | max:计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认值是sum  
(2)并集
  zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum | min | max]
  三、内部编码
  ziplist(压缩列表):
     - 当有序集合的元素个数小于zset-max-ziplist-entries配置(默认128个),同时每个元素的值都小于zset-max-ziplist-entries配置(默认128个),同时每个元素的值都小于zset-max-ziplist-value配置(默认64字节)时,Redis会用ziplist来作为有序集合的内部实现,ziplist可以减少内存的使用  
skiplist(跳跃表):
     - 当ziplist条件不满足时,有序集合会使用skiplist作为内部实现,因为此时ziplist的读写效率会下降  
四、使用场景
  排行榜系统