zoukankan      html  css  js  c++  java
  • Redis之Sorted Set 有序集合

    Redis Sorted Set 有序集合

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

    有序集合的成员是唯一的,但分数(score)却可以重复。

    集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

    应用场景

    1.带有权重的元素,LOL游戏大区最强王者

    2 排行榜

    案例

    斗地主大赛排名

    • 初始比赛
      127.0.0.1:6379> ZADD doudizhu_rank 0 "player1"
      (integer) 1
      127.0.0.1:6379> ZADD doudizhu_rank 0 "player2"
      (integer) 1
      127.0.0.1:6379> ZADD doudizhu_rank 0 "player3"
      (integer) 1
      
    • 比赛开始,经过n轮比赛,每次统计,类似计算如下所示
      127.0.0.1:6379> ZINCRBY doudizhu_rank 3 player3
      "3"
      127.0.0.1:6379> ZINCRBY doudizhu_rank -1 player2
      "-1"
      127.0.0.1:6379> ZINCRBY doudizhu_rank -2 player1
      "-2"
      
    • 比赛结束,进行排名
      127.0.0.1:6379> ZRANGE doudizhu_rank 0 -1
      1) "player1"
      2) "player2"
      3) "player3"
      127.0.0.1:6379> ZRANGE doudizhu_rank 0 -1 withscores
      1) "player1"
      2) "-2"
      3) "player2"
      4) "-1"
      5) "player3"
      6) "3"
      
      逆序排序才对
      127.0.0.1:6379> zrevrange doudizhu_rank 0 -1 withscores
      1) "player3"
      2) "3"
      3) "player2"
      4) "-1"
      5) "player1"
      6) "-2"
      127.0.0.1:6379>
  • 相关阅读:
    mysql删选某列重复值
    apache伪静态
    nginx的伪静态
    如何对数据库进行优化
    ci的优缺点
    memcache状态说明
    sql中扩展插入语法
    若给个 个人收款的二维码,如何测试?
    安装自动化测试工具selenium
    PHP 线上项目 无法操作
  • 原文地址:https://www.cnblogs.com/wzjbg/p/6597451.html
Copyright © 2011-2022 走看看