1、简介
Redis中所有的的数据结构都是通过一个唯一的字符串key来获取相应的value数据。
Redis有5种基础数据结构,分别是:
- string(字符串)
- list(列表)
- hash(字典)
- set(集合)
- zset(有序集合)
其中list、set、hash、zset这四种数据结构是容器型数据结构,它们共享下面两条通用规则:
- create if not exists:容器不存在则创建
- drop if no elements:如果容器中没有元素,则立即删除容器,释放内存
本文讲述的是Redis的5种基础数据结构中的zset(有序集合)
2、zset(有序集合)相关介绍
2.1 zset(有序集合)的内部结构
zset(有序集合)是Redis中最常问的数据结构。它类似于Java语言中的SortedSet和HashMap的结合体,它一方面通过set来保证内部value值的唯一性,另一方面通过value的score(权重)来进行排序。这个排序的功能是通过Skip List(跳跃列表)来实现的。
zset(有序集合)的最后一个元素value被移除后,数据结构被自动删除,内存被回收。
2.2 zset(有序集合)的相关使用场景
利用zset的去重和有序的效果可以由很多使用场景,举两个例子:
- 存储粉丝列表,value是粉丝的ID,score是关注时间戳,这样可以对粉丝关注进行排序
- 存储学生成绩,value使学生的ID,score是学生的成绩,这样可以对学生的成绩排名
3、zset(有序集合)相关指令
1、zadd -> 向集合中添加元素,集合不存在则新建,key代表zset集合名称,score代表元素的权重,member代表元素
zadd key [NX|XX] [CH] [INCR] score member [score member …]
1127.0.0.1:6379> zadd name 10 zhangsan
2(integer) 1
3127.0.0.1:63