Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 sorted set(有序集合)。
sortedSet(有序集合)数据结构
sortedset中存储的成员都有一个附带的分数值
而redis就可以根据分数来对成员进行各种排序(正序、倒序)
1、sortedSet存储内容示意图:

2、往redis库中插入一条sortedset数据
redis 127.0.0.1:6379> zadd nanShenBang 70 "刘德华" 90 "黄渤" 100 "韦小宝" 59 "杨过"
(integer) 4
3、从sortedset中查询有序结果
正序结果
redis 127.0.0.1:6379> zrange nanShenBang 0 3
1) 杨过
2) 刘德华
3) 黄渤
4) 韦小宝
倒序结果
redis 127.0.0.1:6379> zrevrange nanShenBang 0 3
1) 韦小宝
2) 黄渤
3) 刘德华
4) 杨过
4、查询某个成员的名次
在正序榜中的名次
redis 127.0.0.1:6379> zrank nanShenBang "杨过" #从小 ------> 大查询名次
(integer) 0
在倒序榜中的名次
redis 127.0.0.1:6379> zrevrank nanShenBang "杨过" #从大 ------> 小查询名次
(integer) 3
5、修改成员的分数
redis 127.0.0.1:6379> zincrby nanShenBang 300 "杨过"
"359"
redis 127.0.0.1:6379> zrevrank nanShenBang "杨过" #从大------>小查询名次
(integer) 0
应用案例:Lol盒子英雄数据排行榜
1、在redis中需要一个榜单所对应的sortedset数据
2、玩家每选择一个英雄打一场游戏,就对sortedset数据的相应的英雄分数+1
3、Lol盒子上查看榜单时,就调用zrange来看榜单中的排序结果
作业:
带智能推荐的购物车整合到巴巴运动网中:
实现步骤:
1、每来一个用户创建购物车,就对购物车中的每一件商品在redis中插入一条以商品名称为key的sortedset,
成员为同时出现在购物车中的其他商品,分数为1
2、每新产生一个购物车,就对车中的商品更新redis中的sortedset,将同时出现的商品的分数增1
3、推荐时,用户放入一件商品到购物车,则从这件商品对应的sortedset中查询分数最高的同现商品,推荐给该用户
本文深入讲解Redis中SortedSet数据类型的应用,包括数据插入、查询、排序及修改成员分数的方法,并通过具体案例展示如何利用SortedSet实现游戏排行榜和智能推荐购物车功能。
367

被折叠的 条评论
为什么被折叠?



