赞
踩
Redis从入门到放弃系列(五) ZSet
本文例子基于:5.0.4 ZSet是Redis中一种比较复杂的数据结构,当存储大小在128之内且member得长度在64以下,其实现为zipList,超过为SkipList
忽然发现,到现在第五篇文章,还没有讲到zipList,然而前面例如Hash,List的篇章都涉及到了zipList的,后面会单独写一篇zipList的实现的~立Flag 请期待 【Redis从入门到放弃系列(外传) ZipList】
言归正传,首先让我们来看一下该如何在redis里面使用ZSet类型
//将一个或多个元素及其分数加入到有序集合里面
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
代码示例:
//添加元素
>zadd store 1000 xiaoming 2000 xiaoqiang 3000 xiaoyue
(integer) 3
//返回指定区间内的有序集合列表
> zrange store 0 -1 withscores
1) "xiaoming"
2) "1000"
3) "xiaoqiang"
4) "2000"
5) "xiaoyue"
6) "3000"
//返回有序集合的数量
>zcard store
(integer) 3
//查看处于1000到2000的存款的人数
>zcount store 1000 2000
(integer) 2
//查询处于1000到2000的存款的人群
> ZRANGEBYSCORE store 1000 2000
1) "xiaoming"
2) "xiaoqiang"
//根据member查看当前排名
>zrank store xiaoming
(integer) 0
至此,redis zset的用法先告一段落.
源码解析
按照惯例,先来一波zset的数据结构
/* ZSETs use a specialized version of Skiplists */
typedef struct zskiplistNode {
sds ele;
double score;
struct zskiplistNode *backward;
struct zskiplist
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。