Redis中zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。

使用有序集合(zset),你可以非常快地(O(log(N)))完成添加,删除和更新元素的操作。 因为元素是在插入时就排好序的,所以很快地通过评分(score)或者 位次(position)获得一个范围的元素。 访问有序集合的中间元素同样也是非常快的,因此你可以使用有序集合作为一个没用重复成员的智能列表。 在这个列表中, 你可以轻易地访问任何你需要的东西: 有序的元素,快速的存在性测试,快速访问集合中间元素!(推荐学习:Redis视频教程)

简而言之,使用有序集合你可以很好地完成 很多在其他数据库中难以实现的任务。

at first,我们先添加一下数据:> zadd member_list 10 a 3 b 1 c 4 d 7 e

(integer) 5

#返回5,即成功加了5个进入集合。现在试试添加重复的元素

> zadd member_list 9 a 8 f

(integer) 1

#这个步骤,返回了1,而不是2,是因为a这个元素已经存在于集合当中了,不会添加成功。

> zrange member_list 0 6 WITHSCORES

1) "c"

2) 1.0

3) "b"

4) 3.0

5) "d"

6) 4.0

7) "e"

8) 7.0

9) "f"

10) 8.0

11) "a"

12) 9.0

可以看到,有序集合排序的规则是根据分母的大小,分母越小排在集合的前面

可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP TEN的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。

Sorted-Sets类型还可用于构建索引数据。

更多Redis相关技术文章,请访问Redis数据库使用入门教程栏目进行学习!

redis ZSet php,redis中zset怎么使用相关推荐

  1. redis中zset底层实现原理

    https://www.cnblogs.com/yuanfang0903/p/12165394.html 阅读目录 一.Zset编码的选择 二.ziplist 三.skiplist 四.skiplis ...

  2. Redis中ZSet的底层数据结构跳跃表skiplist,你真的了解吗?

    欢迎大家关注我的微信公众号[老周聊架构],Java后端主流技术栈的原理.源码分析.架构以及各种互联网高并发.高性能.高可用的解决方案. 一.前言 老周写这篇文章的初衷是这样的,之前项目中有大量使用 R ...

  3. Redis初学:9(Zset类型)

    Zset(有序集合)类型 简介 Redis里面的有序集合Zset和集合Set非常相似,都是一个没有重复元素的字符串集合. 不同之处是有序集合Zset里面的每个成员都关联了一个评分(score),这个s ...

  4. php redis 搜索,PHP+Redis有序集合(zset)实现博客园阅读排行榜功能

    许多网站都有排行榜的功能,比如球员人气榜单.阅读排行榜,对于一些小网站,通过查数据库就能实现排行榜的功能,但是对于稍微有点用户量而且还是实时排名的网站,使用一些关系型数据库如(MySQL.Oracle ...

  5. Redis(八):Zset有序集合数据类型详解

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序 ...

  6. Redis数据结构详解之Zset(五)

    原文:Redis数据结构详解之Zset(五) 序言 Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zse ...

  7. redis命令之set和zset的操作

    redis里面常用的操作set类型(每个元素都是一个值)的命令: sadd  key member1 [member2 member3 ....]:向key对应的set中添加 sinter set1 ...

  8. Redis源码-ZSet:Redis ZSet存储原理、Redis ZSet命令、 Redis ZSet两种存储底层编码ziplist/dict+skiplist、Redis ZSet应用场景

    Redis源码-ZSet:Redis ZSet存储原理.Redis ZSet命令. Redis ZSet两种存储底层编码ziplist/dict+skiplist.Redis ZSet应用场景 Red ...

  9. 用 Redis 搞定游戏中的实时排行榜,附源码!

    原文:segmentfault.com/a/1190000019139010 1. 前言 前段时间刚为项目(手游)实现了一个实时排行榜功能, 主要特性: 实时全服排名 可查询单个玩家排名 支持双维排序 ...

最新文章

  1. Python 3.8即将发布,这几个变化你必须知道
  2. Unity超级角色控制器研究(四)——地形检测
  3. matlab读int16读文件_MATLAB——文件读写(1)
  4. 《剑指offer》丑数
  5. 计算机视觉算法工程师 笔试,深度学习算法工程师笔试题目
  6. 关于J2SE/Jsp/Sping/Hibernate/Struts2的视频下载
  7. oracle中时间加减一年的写法
  8. python分支结构说课_Python_3.8平台上的分支结构(模块.类.函数)_11
  9. 11届蓝桥杯青少年组C++全国赛高级组 六.编程实现:求阶乘(python3实现)
  10. 如何用Pygame写游戏(二十二)
  11. hbuilderx制作简单网页_简单的手机网页制作教程
  12. ethtool源码分析
  13. Datawhale 零基础入门CV赛事-Task2 数据读取与数据扩增
  14. ERP原理 : 第五节 销售管理的工作原理
  15. 阿里云ace考试有什么用?想要通过需要掌握哪些方面知识?
  16. 如何为IT部门制定更好的战略计划
  17. Vue开发实例(11)之el-menu实现左侧菜单导航
  18. 微信美团服务器开小差,“美团无法使用微信支付”耽误大家干饭,客服:异常已经解决...
  19. Android程序员必看,资深Android面试题
  20. 明星艺人宣传推广的有效方案有哪些呢?

热门文章

  1. 解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
  2. 量化交易软件哪家好?国内排名是?
  3. pat basic 1026 程序运行时间
  4. 幼儿园园长以及教师的职责
  5. Java 迭代器Iterator
  6. ubuntu 无法分屏_ubuntu分屏终端
  7. 【转】【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法...
  8. 小程序点赞和取消点赞的方法
  9. 为什么要发送OPTIONS请求,我可以禁用它吗?
  10. 【Spring】SpringIOC容器的配置及使用