redis ZRANGE 使用最详细文档

发布于:2024-05-03 ⋅ 阅读:(38) ⋅ 点赞:(0)

环境:

redis_version:7.2.2

本文参考 redis 官方文档1

语法

ZRANGE key start stop [BYSCORE | BYLEX] [REV] [LIMIT offset count]   [WITHSCORES]
参数 含义
key 是有序集合的键名
start stop 在不同语境下,可用值不一样
BYSCORE | BYLEX 按照分数查询 | 相同分数按字典序返回
REV 分数降序,相同分数 value 字典降序; 默认是升序,相同分数 value 字典升序;
WITHSCORES 返回分数

不加 BYSCORE | BYLEX 时

start stop 表示元素下标,从 0 开始,0 表示第一个元素,-1 表示最后一个元素,大于有续集合长度,也不会报错。要求 start <= stop (start 是正数,stop 是负数除外)。

# 取出第一个元素
zrange test:zset_0 0 0
# 取出全部元素
zrange test:zset_0 0 -1
# 取出 最后两个元素
zrange test:zset_0 -2 -1
# 不会返回任何元素
zrange test:zset_0 -1 -2

在这里插入图片描述

使用 BYSCORE 参数

start, stop 表示分数;可选值 -inf (负无穷大), 整数, +inf(正无穷大),整数前可加( 符号表示不包含当前值

# 所有值
zrange test:zset_0 -inf +inf BYSCORE
# score in [1, 3]
zrange test:zset_0 1 3 BYSCORE
# score in (1, 3]
zrange test:zset_0 (1 3 BYSCORE
# score in (1, 3)
zrange test:zset_0 (1 (3 BYSCORE

在这里插入图片描述

使用 BYLEX 参数 时

start stop 是字符串,可以 是 -+ 表示 负无穷、正无穷;或以 ([ 开头;
不使用 rev 关键字, 字典序 start <= stop
使用 rev 关键字, 字典序 start >= stop

# 添加 元素到 test:zset_1
zadd test:zset_1 0 'one' 0 'two' 0 'three'
# 查询所有元素
zrange test:zset_1 - + bylex
# value 字典序 in (one, tz]
zrange test:zset_1 (one [tz bylex
# value 字典序 in [one, tz]
zrange test:zset_1 [one [tz bylex

在这里插入图片描述

官方文档要求 使用 BYLEX 的有序集合 score 应保持一致。实际上不一致也可以使用,只不过结果可能不符合预期

zadd test:zset_0 1 'one' 2 'two' 3 'three'
zrange test:zset_0 - + bylex
zrange test:zset_0 [a [z bylex
zrange test:zset_0 [a [three bylex

在这里插入图片描述

使用 REV 参数 时

  • 默认 start <= stop 表示下标。
    # 取出倒序的前两个元素
    zrange test:zset_0 0 1 rev
    # 取出倒序的第一个元素
    zrange test:zset_0 0 0 rev
    # 取出倒序的所有元素
    zrange test:zset_0 0 -1 rev
    
  • 如果使用了 BYSCORE start, stop 表示分数,start >= stop。
    # 所有元素
    zrange test:zset_0 +inf -inf rev byscore
    # score in [3, 3]
    zrange test:zset_0 3 3 rev byscore
     # score in (1, 3)
    zrange test:zset_0 (3 (1 rev byscore
    # score in [2, 3)
    zrange test:zset_0 (3 2 rev byscore
    
    在这里插入图片描述
  • 如果使用了 BYLEX start, stop 表示 value 的字典序,start >= stop。
     # 所有元素
     zrange test:zset_1 + - bylex rev
     # 按字段倒序 查询 value in [two, three]
     zrange test:zset_1 [two [three bylex rev
     # 按字段倒序 查询 value in [two, three)
     zrange test:zset_1 [two (three bylex rev
    
    在这里插入图片描述

LIMIT offset count 分页查询

仅支持 byscore 或 bylex 查询

WITHSCORES 返回分数

不支持 BYLEX 参数
在这里插入图片描述


  1. ZRANGE ↩︎


网站公告

今日签到

点亮在社区的每一天
去签到