redis学习笔记之-(6)-zset集合(排行榜-topN)
6.1 排行榜/topN基本命令
- 加入成员: zadd key score member
- 查询成员: zrange key start stop [withscores] 注: start = 0 end = -1 注: start/end都包含
- 删除成员: zrem key member
- 查看某个成员的 score: zscore key member
- 增加某个成员的score: zincrby key increment member
- 查看结合的size: zcard key
- 查看topN/倒叙: zrevrange key start stop [withscores] 注: start/end都包含
6.2 案例1: 图书销量榜(books)
1. 添加成员
127.0.0.1:6379> zadd books 1 Python编程
1
127.0.0.1:6379> zadd books 2 数学之美
1
127.0.0.1:6379> zadd books 3 浪潮之巅
1
127.0.0.1:6379> zadd books 4 机器学习
1
127.0.0.1:6379> zadd books 5 深入理解Java虚拟机
1
127.0.0.1:6379> zadd books 6 鸟哥的Linux私房菜
1
127.0.0.1:6379> zadd books 7 算法(第4版)
1
127.0.0.1:6379> zadd books 8 'C Primer Plus'
1
127.0.0.1:6379> zadd books 9 "Head First Java(中文版)"
1
127.0.0.1:6379> zadd books 10 Java编程思想(第4版)
1
127.0.0.1:6379> zadd books 11 "C++ Primer中文版(第5版)"
1
127.0.0.1:6379> zadd books 12 计算机网络:自顶向下方法(原书第7版)
1
2. 查询所有books成员=>带分数
127.0.0.1:6379> zrange books 0 -1 withscores
Python编程
1
数学之美
2
浪潮之巅
3
机器学习
4
深入理解Java虚拟机
5
鸟哥的Linux私房菜
6
算法(第4版)
7
C Primer Plus
8
Head First Java(中文版)
9
Java编程思想(第4版)
10
C++ Primer中文版(第5版)
11
计算机网络:自顶向下方法(原书第7版)
12
3. 删除books中成员: ‘C Primer Plus’
127.0.0.1:6379> zrem books 'C Primer Plus'
1
127.0.0.1:6379> zrange books 0 -1 withscores ## 查询所有成员=>带分数
Python编程
1
数学之美
2
浪潮之巅
3
机器学习
4
深入理解Java虚拟机
5
鸟哥的Linux私房菜
6
算法(第4版)
7
Head First Java(中文版)
9
Java编程思想(第4版)
10
C++ Primer中文版(第5版)
11
计算机网络:自顶向下方法(原书第7版)
12
4. 单独查看books成员score
127.0.0.1:6379> zscore books 数学之美 ## 查看'数学之美'成员的 score
2
5. 增加books中成员排名score
127.0.0.1:6379> zincrby books 20 数学之美
22
127.0.0.1:6379> zscore books 数学之美
22
6. 查看books成员总数
127.0.0.1:6379> zcard books # 查看集合size
11
7. 查看books榜单top5
127.0.0.1:6379> zrevrange books 0 4 withscores # 逆序查看 topN => start=0 stop=4
数学之美
22
计算机网络:自顶向下方法(原书第7版)
12
C++ Primer中文版(第5版)
11
Java编程思想(第4版)
10
Head First Java(中文版)
9
127.0.0.1:6379>
6.3 案例2: 热榜新闻
2020年8月一组新闻: rank:202008
2020年9月一组新闻: rank:202009
点击新闻(增加热度), 增加score:
zincrby key news:20201001 1
1. 增加新闻条目(8月): rank:202008
127.0.0.1:6379> zadd rank:202008 1 恭喜!潘玮柏晒全家照宣布结婚
1
127.0.0.1:6379> zadd rank:202008 1 TikTok正式起诉美国政府
1
127.0.0.1:6379> zadd rank:202008 1 员工不喝领导敬酒被打耳光辱骂
1
127.0.0.1:6379> zadd rank:202008 1 上节目时遭观众现场举报
1
127.0.0.1:6379> zadd rank:202008 1 罕见!新华社3.1万字长文逐条批蓬佩奥演讲
1
127.0.0.1:6379> zadd rank:202008 1 《八佰》票房破十亿
1
127.0.0.1:6379> zadd rank:202008 1 华语影史第6位!张译主演电影票房破百亿
1
127.0.0.1:6379> zadd rank:202008 1 外媒:博尔特新冠检测呈阳性
1
127.0.0.1:6379> zadd rank:202008 1 "面对美方天价罚金 字节跳动选择和解"
1
127.0.0.1:6379> zadd rank:202008 1 1个蚂蚁金服估值相当于4个SpaceX
1
2. 查看总条数(8月)
127.0.0.1:6379> zcard rank:202008
10
3. 用户点击新闻(8月)
127.0.0.1:6379> zincrby rank:202008 1 TikTok正式起诉美国政府
2
127.0.0.1:6379> zincrby rank:202008 1 TikTok正式起诉美国政府
3
127.0.0.1:6379> zincrby rank:202008 1 TikTok正式起诉美国政府
4
127.0.0.1:6379> zincrby rank:202008 1 TikTok正式起诉美国政府
5
127.0.0.1:6379> zincrby rank:202008 1 TikTok正式起诉美国政府
6
127.0.0.1:6379> zincrby rank:202008 1 TikTok正式起诉美国政府
7
127.0.0.1:6379> zincrby rank:202008 1 1个蚂蚁金服估值相当于4个SpaceX
2
127.0.0.1:6379> zincrby rank:202008 1 1个蚂蚁金服估值相当于4个SpaceX
3
127.0.0.1:6379> zincrby rank:202008 1 1个蚂蚁金服估值相当于4个SpaceX
4
127.0.0.1:6379> zincrby rank:202008 1 《八佰》票房破十亿
2
127.0.0.1:6379> zincrby rank:202008 1 《八佰》票房破十亿
3
4. 查看新闻热点前三(8月)
127.0.0.1:6379> zrevrange rank:202008 0 2
TikTok正式起诉美国政府
1个蚂蚁金服估值相当于4个SpaceX
《八佰》票房破十亿
127.0.0.1:6379> zrevrange rank:202008 0 2 withscores
TikTok正式起诉美国政府
7
1个蚂蚁金服估值相当于4个SpaceX
4
《八佰》票房破十亿
3
5. 新增一组新闻(9月) rank:202009
127.0.0.1:6379> zadd rank:202009 1 阿里巴巴合伙人胡喜正式离职
1
127.0.0.1:6379> zadd rank:202009 1 新一线城市居住报告
1
127.0.0.1:6379> zadd rank:202009 1 驴友被挂瀑布追踪
1
127.0.0.1:6379> zadd rank:202009 1 上海一公司要求员工产假期间每天手写心得
1
127.0.0.1:6379> zadd rank:202009 1 伪造清华录取书考生离家出走
1
127.0.0.1:6379> zadd rank:202009 1 女孩高考超本一线132分不敢算学费
1
127.0.0.1:6379> zadd rank:202009 1 越南美女花720万建800㎡别墅
1
127.0.0.1:6379> zadd rank:202009 1 "失联45天,95后男孩独自骑行可可西里"
1
127.0.0.1:6379> zadd rank:202009 1 消息称谷歌工程师每日工时不到6小时
1
127.0.0.1:6379> zadd rank:202009 1 腾讯等大厂抛弃35岁员工如扔药渣
1
127.0.0.1:6379> zcard rank:202009
10
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
2
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
3
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
4
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
5
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
6
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
7
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
8
127.0.0.1:6379> zincrby rank:202009 1 驴友被挂瀑布追踪
9
127.0.0.1:6379> zincrby rank:202009 1 腾讯等大厂抛弃35岁员工如扔药渣
2
127.0.0.1:6379> zincrby rank:202009 1 腾讯等大厂抛弃35岁员工如扔药渣
3
127.0.0.1:6379> zincrby rank:202009 1 腾讯等大厂抛弃35岁员工如扔药渣
4
127.0.0.1:6379> zincrby rank:202009 1 腾讯等大厂抛弃35岁员工如扔药渣
5
127.0.0.1:6379> zincrby rank:202009 1 腾讯等大厂抛弃35岁员工如扔药渣
6
127.0.0.1:6379> zincrby rank:202009 1 女孩高考超本一线132分不敢算学费
2
127.0.0.1:6379> zincrby rank:202009 1 女孩高考超本一线132分不敢算学费
3
127.0.0.1:6379> zincrby rank:202009 1 女孩高考超本一线132分不敢算学费
4
127.0.0.1:6379>
6. 9月增加一条与8月有重复的新闻
127.0.0.1:6379> zadd zrank:202009 1 1个蚂蚁金服估值相当于4个SpaceX
1
127.0.0.1:6379> zscore zrank:202009 1个蚂蚁金服估值相当于4个SpaceX
1
127.0.0.1:6379> zincrby rank:202009 1 1个蚂蚁金服估值相当于4个SpaceX
1
127.0.0.1:6379> zincrby rank:202009 1 1个蚂蚁金服估值相当于4个SpaceX
2
127.0.0.1:6379> zincrby rank:202009 1 1个蚂蚁金服估值相当于4个SpaceX
3
127.0.0.1:6379> zincrby rank:202009 1 1个蚂蚁金服估值相当于4个SpaceX
4
127.0.0.1:6379> zincrby rank:202009 1 1个蚂蚁金服估值相当于4个SpaceX
5
127.0.0.1:6379>
7. 查看8月和9月共同的新闻交集(相同成员score会sum加起来)
zinterstore destination numkeys key1 [key2…]
numkeys 指明: 要求交集的集合有几个
127.0.0.1:6379> zscore rank:202008 1个蚂蚁金服估值相当于4个SpaceX
4
127.0.0.1:6379> zscore rank:202009 1个蚂蚁金服估值相当于4个SpaceX
5
127.0.0.1:6379> zinterstore rank:20200809 2 rank:202008 rank:202009
1
127.0.0.1:6379> zrange rank:20200809 0 -1 # 查看所有集合内元素
1个蚂蚁金服估值相当于4个SpaceX
127.0.0.1:6379> zrange rank:20200809 0 -1 withscores # 查看所有集合内元素 withscores
1个蚂蚁金服估值相当于4个SpaceX
9
127.0.0.1:6379>
可以看到, 两个有序集合zset求出交集, 分数会sum;
8. 查看8月和9月新闻的并集(相同成员score会sum加起来)
zunionstore destination numkeys key1 [key2…]
127.0.0.1:6379> zunionstore rank:20200809:union 2 rank:202008 rank:202009
20
127.0.0.1:6379> zrevrange rank:20200809:union 0 -1 withscores
驴友被挂瀑布追踪
9
1个蚂蚁金服估值相当于4个SpaceX
9
TikTok正式起诉美国政府
7
腾讯等大厂抛弃35岁员工如扔药渣
6
女孩高考超本一线132分不敢算学费
4
《八佰》票房破十亿
3
面对美方天价罚金 字节跳动选择和解
1
阿里巴巴合伙人胡喜正式离职
1
越南美女花720万建800㎡别墅
1
罕见!新华社3.1万字长文逐条批蓬佩奥演讲
1
消息称谷歌工程师每日工时不到6小时
1
新一线城市居住报告
1
恭喜!潘玮柏晒全家照宣布结婚
1
失联45天,95后男孩独自骑行可可西里
1
外媒:博尔特新冠检测呈阳性
1
员工不喝领导敬酒被打耳光辱骂
1
华语影史第6位!张译主演电影票房破百亿
1
伪造清华录取书考生离家出走
1
上节目时遭观众现场举报
1
上海一公司要求员工产假期间每天手写心得
1
127.0.0.1:6379>
9. 小结-zset命令
zadd key score member
zrange key start stop [withscores]
zrevrange key start stop [withscores]
zrem key member
zscore key member
zincrby key increment member
zcard key
zinterstore destination numkeys key1 [key2…]
zunionstore destination numkeys key1 [key2…]
numkeys 指明: 要求交/并集的集合key有几个
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 hi@niewj.com