【Redis缓存机制】7.SortSet排序集合类型操作

Sort Set排序集合类型

(1)介绍
和set一样sorted set也是string类型元素的集合,
不同的是每个元素都会关联一个权。
通过权值可以有序的获取集合中的元素


该Sort Set类型适合场合:
获得热门帖子(回复量)信息:select * from message order by backnum desc linit 5;
(以上需求可以通过简单sql语句实现,但是sql语句比较耗费数据库资源)

(1)操作
zadd key score member            添加元素到集合,元素在集合中存在则更新对应score
zrem key member                  删除指定元素,1表示成功,如果元素不存在返回0
zincrby key incr member          按照incr幅度增加对应member的score值,返回score值
zrank key member                 返回指定元素在集合中的排名(下标),集合中元素是按score从小到大排序的
zrevrank key member              同上,但是集合中元素是按score从大到小排序
zrange key start end             类似lrange操作是从集合中去指定区间的元素。返回的是有序的结果(从第start个到第end个元素)
zrevrange key start end          同上,返回结果是按score逆序的
zcard key                        返回集合中元素个数
zscore key element               返回给定元素对应的score
zremrangebyrank key min max      删除集合中排名在给定区间的元素(权值从小到大排序)


(3)模拟

我们模拟帖子信息,将点击量比较高的帖子信息存储起来,看看是否
自动进行了排序。

我们只做一个sort set排序集合,里面只保留5个元素信息,该5个元素是回复
量最高的帖子。每个帖子被回复的时候,都有机会进入该集合里面,但是只有
回复量高的前五个帖子会存在于该集合,回复量低的就被删除。

创建一个sort set排序集合hotmessage的key,内部有5个元素:


然后第六个帖子的信息加入集合:


我们按照权值从大到小逆序排序显示一下我们的数据:


我们要删除回复量最低的数据(从小到大的排序后,删除区间为0到0的元素,也就是0本身)

可以看到之前排序权值最小的14被删除了

想查看某一个权值数据的排名(zrank从小到大,zrevrank从大到小),使用zrank指令


zcard指令可以返回SortSet集合中的元素个数


zincrby指令增加某个权值下的数值,我们给权值11的数据加200,

可以看到最后从大到小排行,11变成了数值最大的,排名第一了

最后,想查看某个权值对应的数据值,使用zscore就可以了:


总结:
关于重复元素:
Set类型:没有
List链表类型:有

Sort Set类型:没有

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值