当前位置: 技术文章>> redis入门到实战之zset类型的应用场景

文章标题:redis入门到实战之zset类型的应用场景
  • 文章分类: 后端
  • 22890 阅读

Redis数据类型:zset(sorted set )
zset是Redis中最具有特色的数据结构(跳跃列表),首先它有set不可重复的特性,在这个基础上,还可以给value赋予一个排序权重score,所谓的有序其实就是根据这个得分来排序。排序的set,可以去重还可以排序,写进去的时候给一个分数,自动根据根据分数排序,分数可以自定义排序规则。

Redis 有序集合zset和集合set一样也是String类型元素的集合,且不允许重复的成员。不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的成员进行从小到大的排序。Redis的zset天生是用来做排行榜的,榜单,总榜,热榜。

1.1、排行榜

用户发布了n篇文章,其他人看到文章后给喜欢的文章点赞,使用score来记录点赞数,有序集合会根据score排行。流程如下:

用户发布一篇文章a,初始点赞数为0,即score为0

zadd user:article 0 a

有人给文章a点赞,递增1

zincrby user:article 1 a

查询点赞前三篇文章

zrevrangebyscore user:article 0 2

查询点赞后三篇文章

zrangebyscore user:article 0 2

1.2、实时排名
与排行榜类似,但每个元素的分数随时会变化。可以将用户的 ID 和分数存储在 Redis 的 Zset 类型中,然后通过 ZINCRBY 命令更新用户的分数,通过 ZRANK 命令获取用户的排名,从而实现实时排名的功能。

1.3、时间序列
可以将事件的时间戳和内容以键值对的形式存储在 Redis 的 Zset 类型中,然后可以通过 ZADD 命令将事件添加到有序集合中,通过 ZRANGEBYSCORE 命令获取指定时间范围内的事件,从而实现时间序列的功能。


推荐文章