• redis:zset(赋值、取值、删除、修改分数)


    1、概念

    (1)基本概念

    • redis的有序集合与集合一样也是String类型元素的集合,不允许有重复的元素
    • 每一个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行重大到小的排序
    • 有序集合中的成员是唯一的,但是分数可以重复
    • 集合是通过哈希表实现的,集合中的最大元素是2的32次方减1。Zset是有序且不重复的

    (2)应用

    销量排行、积分排行、成绩排行,集合的value作为学号,成绩作为分数,插入集合的时候就已经排好顺序了

    2、赋值

    (1)赋值语法

    127.0.0.1:6379> zadd z1 1 html 23 css 25 js 
    (integer) 3

    向有序集合中添加一个或多个成员,或者更新已经存在的成员的分时

    3、取值

    (1)获取有序集合的成员数量

    127.0.0.1:6379> zcard z1
    (integer) 3

    (2)计算有序集合中指定区间分数的成员数

    127.0.0.1:6379> zcount z1 1 23
    (integer) 2

    (3)返回有序集合指定成员的索引

    127.0.0.1:6379> zrange z1 0 -1
    1) "html"
    2) "css"
    3) "js"
    127.0.0.1:6379> zrank z1 js
    (integer) 2
    127.0.0.1:6379> zrank z1 html
    (integer) 0

    (4)通过索引区间返回有序集合指定区间内的成员

    127.0.0.1:6379> zrange z1 0 -1
    1) "html"
    2) "css"
    3) "js"
    127.0.0.1:6379> zrange z1 0 1
    1) "html"
    2) "css"
    127.0.0.1:6379> zrevrange z1 0 -1
    1) "js"
    2) "css"
    3) "html"
    127.0.0.1:6379> zrange z1 0 -1
    1) "html"
    2) "css"
    3) "js"
    127.0.0.1:6379> 

    zrevrange是通过索引,分数从高到低排列

    (5)通过分数返回有序集合指定区间的成员

    127.0.0.1:6379> zrangebyscore z1 0 23
    1) "html"
    2) "css"
    127.0.0.1:6379> zrevrangebyscore z1 23 0
    1) "css"
    2) "html"
    127.0.0.1:6379> zrangebyscore z1 0 23
    1) "html"
    2) "css"

    (6)返回索引

    127.0.0.1:6379> zrank z1 css
    (integer) 1

    4、删除

    (1)移除集合

    127.0.0.1:6379> del z1
    (integer) 1
    127.0.0.1:6379> zrange z1 0 -1
    (empty list or set)

    (2)移除集合中的一个或多个成员

    127.0.0.1:6379> zadd z1 1 html 23 css 25 js 
    (integer) 3
    127.0.0.1:6379> zrange z1 0 -1
    1) "html"
    2) "css"
    3) "js"
    127.0.0.1:6379> zrem z1 html css
    (integer) 2
    127.0.0.1:6379> zrange z1 0 -1
    1) "js"

    (3)移除有序集合中给定的排名区间的所有成员

    127.0.0.1:6379>  zadd z1 1 html 23 css 25 js 
    (integer) 3127.0.0.1:6379> zremrangebyrank z1 0 1
    (integer) 2
    127.0.0.1:6379> zrange z1 0 -1
    1) "js"

    (4)根据分数区间删除

    127.0.0.1:6379> zrange z1 0 -1
    1) "html"
    2) "css"
    3) "js"
    127.0.0.1:6379> zremrangebyscore z1 1 23
    (integer) 2
    127.0.0.1:6379> zrange z1 0 -1
    1) "js"

    5、增加分数

    (1)增加元素的分组,返回值是更改后的分数:

    127.0.0.1:6379> zrange z1 0 -1
    1) "html"
    2) "css"
    3) "js"
    127.0.0.1:6379> zincrby z1 100 html
    "101"
    127.0.0.1:6379> zrange z1 0 -1
    1) "css"
    2) "js"
    3) "html"

    6、zset应用案例

    (1)插入学生的成绩:

    127.0.0.1:6379> zadd zhai 67 java 89 database 90 html 100 css 
    (integer) 4

     (2)查询比较高的两门功课

    127.0.0.1:6379> zrevrange zhai 0 1
    1) "css"
    2) "html"

    (3)查询60-90的功课:

    127.0.0.1:6379> zrangebyscore zhai 60 90
    1) "java"
    2) "database"
    3) "html"
  • 相关阅读:
    使用scp进行远程数据传输时避免输入密码(scp without password)
    scons用户指南翻译(附gcc/g++参数详解)
    StringIO 模块用于在内存缓冲区中读写数据
    注意变换的顺序
    为什么static成员必须在类外初始化
    Visual Studio中删除所有空行
    rendering order of skybox
    解决VS中注释乱码的问题
    一道数论题目
    First Chance Exception
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13286958.html
Copyright © 2020-2023  润新知