首页 > 数据库 >开发手记:Redis中zset查询的range

开发手记:Redis中zset查询的range

时间:2023-05-19 17:22:18浏览次数:40  
标签:zset Redis bookinfo range limit offset SELECT

问题描述

从Redis中查询关注列表(使用zset存储),但是查询到的记录总是比应有的记录数少一个

Set<Integer> targetIds = redisTemplate.opsForZSet().reverseRange(key, offset, offset + limit - 1);

调试

于是去检查Redis中置顶键zset中的所有数据,发现自己对zset相关命令似乎并不太熟悉,于是笔记恶补一波Redis中zset的常用命令
数据是对的,也就是说确实是少查了一条出来

ZRANGE follower:3:11 0 -1

-1表示查询所有

解决

发现是偏移量的问题,一般使用的offset从1开始,像这样

ZRANGE follower:3:11 1 100

但是其实应该是从0开始

ZRANGE follower:3:11 0 100

反思总结

之前一直以为offset是从1开始编号的,自己也是一直这么做的,但是跟ChatGPT确认后才发现原来自己一直都是错的,无论是MySQL还是Redis都应该从0开始编号
属于低级错误

稍微复习了下SQL,发现自己有更多的低级错误和很差的基础知识,这里记下,引以为戒
首先offset关键字和limit关键字是有顺序要求的,limit在前offset在后

SELECT * FROM `bookinfo` OFFSET 0 limit 1 # 这样写是错误的
SELECT * FROM `bookinfo` limit 1 OFFSET 0 # 正确写法

同时还有替代写法,第一个参数是offset,第二个参数是limit

SELECT * FROM `bookinfo`  limit 0,2

另外还有很重要的一点,SQL中原生的offset是行偏移而不是页偏移,页便宜应该是分页插件提供的功能,和这里的不是同一个偏移概念

SELECT * FROM `bookinfo`  limit 1,5 # 返回第2~6条数据

标签:zset,Redis,bookinfo,range,limit,offset,SELECT
From: https://www.cnblogs.com/yaocy/p/17415696.html

相关文章

  • Docker容器安装示例(nginx、redis、nacos、oracle)
    1.nginx示例1.创建容器1.查看是否有nginx镜像dockerimages2.如果没有镜像,可以搜索镜像dockersearchnginx3.指定版本拉取nginxdockerpullnginx:1.20.04.查看镜像dockerimages5.创建容器(-d后台运行,-p容器80端口映射到宿主机8080端口,指定名称nginx-test,指定镜像ID:......
  • Redis学习手册(持久化)
    一、Redis提供了哪些持久化机制:   1).RDB持久化:   该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。       2).AOF持久化:   该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动......
  • k8s快速部署Redis单机
    1.创建Redis配置apiVersion:v1data:redis.conf:|-bind0.0.0.0port6379requirepassSystem@123pidfile/var/run/redis_6379.pidsave9001save30010save6010000rdbcompressionyesrdbchecksumyesdbfilenamedum......
  • java面试题--Redis
    一、说一下redis的持久化机制原理?RDB文件:redisdatabase。存储的是某个时间点的数据库内容的快照,是结果。redis默认的持久化策略。落盘策略:使用SAVE或者BGSAVE命令。(1)SAVE:有主线程执行,会阻塞客户端。(2)BGSAVE:会fork出一个子进程,不会出现阻塞问题。子进程使用写时拷贝的策......
  • linux安装redis的多种方式
    一、通用方式要在Linux上安装Redis,可以按照以下步骤进行操作:1.打开终端,使用以下命令下载Redis的压缩包:wgethttp://download.redis.io/releases/redis-x.x.x.tar.gz注意将"x.x.x"替换为你想要下载的Redis版本号。2.解压下载的压缩包:tarxzfredis-x.x.x.tar.gz进入......
  • 【redis】哨兵监控原理-springboot 监控
    连接序列图解: 连接步骤:1.boot应用启动时,会从yml文件中配置的多个sentinel中抽取一个进行连接,sentinel有单独的账号密码,需要区分sentinel于redis主节点的账号密码,同时需要将连接的主从节点masterName告知sentinel。2.boot应用与sentinel协议并鉴权成功后,sentinel会将第一步......
  • deepin安装Redis
    deepin安装Redis一、安装Redissudoapt-getinstallredis-server安装完成之后,Redis服务器会自动启动二、检查Redis服务器系统进程(非必要)ps-aux|grepredis三、查看Redis端口状态(非必要)netstat-nlt|grep6379四、输入redis-cli进入命令模式(非必要) 四、配置Redis(完成......
  • Redis 高级特性 Redis Stream使用
    RedisStream简介RedisStream是Redis5.0版本新增加的数据结构。Stream从字面上看是流类型,但其实从功能上看,应该是Redis对消息队列(MQ,MessageQueue)的完善实现。下文称Stream为队列Stream出现原因:Stream的出现是为了给Redis提供完善的消息队列功能基于Reids的消息队列......
  • Redis 在windows 下安装使用
    管理界面: Release2022.5·lework/RedisDesktopManager-Windows(github.com)redis服务:发布·特波拉多夫斯基/雷迪斯(github.com)验证redis服务是否安装完成,和配置密码redis-cliconfigsetrequirepass密码auth密码 ......
  • linux ranger install
    https://www.bilibili.com/video/BV1ER4y1F72Ahttps://mp.weixin.qq.com/s/y1ISUqoya1rJGTpDd5OwMw项目地址https://github.com/ranger/ranger>sudoapt-getinstallranger>ranger --copy-config=allgit clone https://github.com/alexanderjeurissen/ranger_devicons......