前言:zset(有序列表)可能是redis中提供的最有特殊的数据类型,它也是面试官中最喜欢稳到的数据类型,一方面它是一个set(无序列表),可以保证它内部的value唯一性,去重。另一个方面它可以给每个value一个权重,代表这个value的排序权重,当zset中最后一个元素被删除时,数据结构被自动删除,内存被回收,zset可以用来做存储好友列表,value是好友的用户id,权重是添加时间,我们可以对添加时间进行排序,另外,我们也可以对一些成绩、得分的功能进行,只要对成绩、得分进行排序就可以得到他们的名次
下面我们开始示例:
语法:zadd key 权重 value
顺序查看列表:zrange key 从哪里开始 从哪里结束 (权重作为排序列出)
逆序查看列表:zrevrange key 从哪里开始 从哪里结束(权重作为排序列出)
统计长度:zcard key
获取指定value的权重:zscore key value 注:权重内部使用doubel类型进行存储,所有会有小数点精度问题
获取权重:zrank key value
根据分值区间遍历:zrangebyscore key 权重区间
根据分值区间遍历有序列表,同时返回分值,inf代表infinite,无穷大的意思:zrangebyscore key int 权重区间 withscores
删除value:zrem key value
到这里,redis的基础就不多了,有兴趣的可以点击我的博客查看其它类型的用法,在这里其实,redis的有序列表设计到一个跳跃列表,有兴趣的可以去了解一下,下面的文章的话,笔者会写一些进阶篇的,由于笔者的语言是php,所有接有设计到代码的示例,会以php的形式写出来,如果你是其他语言,可以借鉴php的代码来借鉴