redis ZRANGE 使用最详细文档

环境:

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 ↩︎

  • 24
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值