redis zrange 与 zrangebyscore的区别

news2024/11/27 21:54:38

redis zrange 与 zrangebyscore的区别

目录

  • redis zrange 与 zrangebyscore的区别
    • 前言
    • 先说概念上的结论:
    • 实验
      • 数据准备
      • 对比案例一
      • 对比结论:
      • 对比案例二
      • 对比结论:
    • 总结

前言

想做一个在redis中获取数据时分页的功能,从网上查找到了zrange和zrangebyscore两个函数,对于这两个函数的理解,在刚刚读完官方文档后,还是不太懂:

zrange: “The order of elements is from the lowest to the highest score. Elements with the same score are ordered lexicographically.” https://redis.io/commands/zrange

zrangebyscore:“The elements are considered to be ordered from low to high scores.” https://redis.io/commands/zrangebyscore

嗯?都是依据socre排序,所以啥区别?虽说是一个索引一个score,但结果都是按照score排序,所以到底有啥区别???

刚接触的时候,光靠看定义来理解,真的很容易蒙蔽。

所以做个实验,就清楚了。

先说概念上的结论:

 两者的区别,就是一个是“索引”(zrange),一个是“score”(zrangebyscore)!【are you kidding me?!】

实验

数据准备

在redis中依次执行下列语句:

zadd test 1 first
 
zadd test 10 two
 
zadd test 8 three
 
zadd test 7 four
 
zadd test 2 five
 
zadd test 1.1 onePointOne
 
zadd test 2 six
 
zadd test 8 seven
 
zadd test 7 sight

对比案例一

我们输入0 2两个参数来查询(具体命令使用方法请自行查阅官方文档)

用zrange
命令:

zrange test 1 2 withscores

在这里插入图片描述

结果:

在这里插入图片描述
用zrangebyscore
命令

zrangebyscore test 1 2 withscores

结果:
在这里插入图片描述

对比结论:

zrange是传入的值是索引 ,因此查询的值“1”代表是查询第二个值,也就是说,索引的情况下,索引0是第一个元素。

而zrangebyscore传入的值就是值本身的含义,也就是“score”

注:确实,官方文档就说了起始值为0的问题,但这确实是一个容易犯错误的地方。

对比案例二

我们输入0 7两个参数来查询(具体命令使用方法请自行查阅官方文档)

用zrange
命令:

zrange test 0 7 withscores

结果:
在这里插入图片描述

用zrangebyscore
命令:

zrangebyscore test 0 7 withscores

结果:
在这里插入图片描述

对比结论:

  1. 同上一个测试

  2. zrange查询的结果个数,就是索引的区间长度(如【0-7】,区间长度是8,所以查出来8个数据,当然,前提是数据不少于8个),
    而zrangebyscore由于是用socre来查询,因此,在准备的数据中,有多少个符合【0,7】区间的数据,就会返回多少数据。

注:确实,官方文档就说了起始值为0的问题,但这确实是一个容易犯错误的地方。

总结

  1. zrange的第一个数据是索引为0的数据,而zrangebyscore的第一个数据,是score值最小的那个数据

  2. zrange传入的参数是“索引”的含义,而zrangebyscore就是单纯的一个数值的含义

  3. zrange查询的结果个数<= 查询区间长度,也就是说 ,区间多长,就查询出多少个结果出来(数据不少于区间长度,足够多的情况下),而zrangebyscore的查询结果个数视实际数据而定,也就是凡是符合区间的数据,全部查询出来.

  4. 所以在分页查询的需求下,zrange可以保证每页的数据量,而zrangebyscore不能保证。

    如果有数据更新,zrange就会出现数据查询重复和遗漏的情况。而zrangebyscore却由于符合条件则全部查询出来的特性,而不会出现重复和遗漏。

不理解“重复和遗漏”是怎么发生的?自己仔细思考去吧,实在不行做个实验,你就明白了,这里我不细说。

  1. 勤于动手,丰衣足食。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/664842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C/C++数据结构与算法】C语言预处理

目录 一、源文件到可执行程序的过程 二、预处理详解 1. 预定义符号 2. #define 3. 条件编译 一、源文件到可执行程序的过程 预处理&#xff1a;去注释&#xff0c;宏替换&#xff0c;头文件展开&#xff0c;条件编译编译&#xff1a;c语言 ---> 汇编语言&#xff08;语…

软考高级系统架构设计师(二) 基础知识之计算机组成与系统结构

目录 概要 计算机组成结构 CPU组成 冯诺依曼结构 存储系统-层次化存储结构 高速缓冲存储器cache 主存编址计算 磁盘管理 磁盘管理算法 先来先服务&#xff08;FCFS&#xff09;&#xff1a; 最短寻道时间优先&#xff08;SSTF&#xff09; 扫描算法&#xff08;电梯调度…

【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

文章目录 1. 安装 Visual Studio2. 安装 Qt3. 联合Ref 先上一张效果图&#xff0c;具体步骤主要分为以下三步。 1. 安装 Visual Studio 这一步不再赘述&#xff0c;注意一定要安装 C 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 2. 安装 Qt 这一步也不再赘…

DAY10_HTTPTomcatServlet

目录 1 Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器 2 HTTP2.1 简介2.2 请求数据格式2.2.1 格式介绍2.2.2 实例演示 2.3 响应数据格式2.3.1 格式介绍2.3.2 响应状态码2.3.2.1 状态码大…

vue+element-ui初体验入门拥有自己的前台项目以及配置文件讲解(2)组件式开发,路由,请求发送

阿丹&#xff1a; 前面的文章已经进行了vue的组件安装&#xff0c;本篇文章来了解一下vue的语句语法以及element-ui的具体用法。并使用全局的守卫路由来完成用户完成登录来请求头携带token 导入axios以及导入element-ui 按照图片指引来到main.js将我们前面文章下载的组件进行…

基于matlab将天线工具箱与相控阵系统配合使用(附源码)

一、前言 创建天线阵列&#xff08;如均匀线性阵列 &#xff08;ULA&#xff09;&#xff09;时&#xff0c;可以使用相控阵系统工具箱中内置的天线。或者&#xff0c;您可以使用天线工具箱天线。天线工具箱天线提供物理天线的真实模型。它们是使用力矩的方法设计的。相控阵天线…

自动化测试工具 AirTest 的使用方法与简介

目录 前言&#xff1a; Airtest简介 1.基于图像识别的Airtest框架 2.基于UI识别的Poco框架 Airtest环境搭建 Airtest布局 Airtest使用步骤 第一步&#xff1a;连接移动设备 第二步&#xff1a;创建一个.air文件&#xff08;也就是我们的测试脚本&#xff09; 第三步&#xff1a…

相机去畸变

1. 背景 在做图像感知工作过程中会遇到需要处理相机畸变的情况&#xff0c;如SLAM、3D重建等&#xff0c;则需要了解一些常见相机模型的成像过程&#xff0c;以及依据成像过程实现去除相机成像的畸变。 注意&#xff1a;这篇文章并不涉及太多相机参数畸变原理&#xff0c;更多…

Vicuna模型权重合成及模型部署

第一式&#xff1a;Vicuna模型部署 1.环境搭建1.1 构建虚拟环境1.2 安装FastChat1.2.1 利用pip直接安装1.2.2 从github下载repository然后安装 2.Vicuna Weights合成2.1 下载vicuna delta weights2.2 下载原始llama weights2.3 合成真正的working weights2.3 填坑手册 3. 使用命…

第九章 os模块

1. os模块介绍 os 模块是Python 内置的与操作系统中的文件系统相关的模块&#xff0c;该模块依赖于操作系统。通常情况下&#xff0c;如不特别指出&#xff0c;该模块提供的方法、属性在Windows 和UNIX 系统上都是可用的。其中&#xff0c;UNIX 系统包括Linux 和Mac OS X 说明…

软件加密类型及原理特点总结

目录 一、软件加密目的 二、加密方式介绍 2.1 硬件加密 2.2 软件加密 三、软件加密方式 3.1非对称加密算法 3.2对称加密算法 四、数字签名 五、软件破解方式 参考文献 一、软件加密目的 防止软件被复制使用并恶意破坏&#xff0c;给企业和个人带来经济损失。 二、加密方…

杂记 | 使用Docker和Nginx为网站添加HTTPS访问功能

文章目录 01 准备工作1.1 HTTPS介绍1.2 准备工作 02 编写nginx.conf03 使用docker启动nginx 01 准备工作 1.1 HTTPS介绍 HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种通过加密通信保护网站数据传输的协议。它是 HTTP 协议的安全版本&#xff0c;通…

ROS下写服务

话题和服务的对比&#xff1a; 1.话题 话题是单向的&#xff0c;而且不需要等待服务端上线&#xff0c;直接发就行&#xff0c;数据的实时性比较高。 频率高&#xff0c;实时性强的传感器数据的传递一般使用话题实现。 话题通信是ROS中使用频率最高的一种通信模式&#xff0c…

人工智能之后,量子计算将成为下一趋势

光子盒研究院 人工智能显然是席卷科技行业的最新热潮&#xff0c;但一个更大的趋势可能即将到来&#xff0c;那就是量子计算——只要它能解决令人不安的网络安全问题。 量子计算的进展似乎注定要使今天的基于电子芯片的超级计算机逊色。这些机器在亚原子水平上工作&#xff0c;…

excel爬虫相关学习1:简单的excel爬虫

目录 1 什么是excel 爬虫 2 EXCEL爬虫 2.1 excel 爬虫的入口 2.2 需要配置的信息 2.2.1 如何获得 ua信息 2.3 获取的信息 2.3.1 获取信息的基本内容 2.3.2 获取过程 2.3.3 我们只用关注“表视图 ” 即可 2.4 EXCEL获得的爬虫数据 加载到excel里 2.5 数据到了excel表后…

解决关于由于找不到vcruntime140_1.dll丢失的解决方法(有效的解决方法)

vcruntime140_1.dll是什么什么文件呢&#xff1f;为什么电脑在运行一些游戏的时候会出现丢失vcruntime140_1.dll&#xff0c;然后游戏运行失败?这个dll文件是电脑重要的运行库文件。丢失了会导致很多程序无法运行。 本教程操作系统&#xff1a;Windows vcruntime140_1.dll丢失…

AN10834-MIFARE ISOIEC 14443 PICC selection.pdf

AN10834-MIFARE ISOIEC 14443 PICC selection.pdf 1简介 在读卡器&#xff08;系统&#xff09;和智能卡之间交换数据之前&#xff0c;必须正确选择智能卡。该卡选择过程&#xff08;卡激活&#xff09;在用于非接触式接近系统的ISO14443-3中进行了描述。非接触式应用的急剧增…

k8s部署成功后却显示结点一直处于NotReady状态解决方案

直接说结论&#xff1a;原因是服务器的/opt/cni/bin/目录中没有flannel插件&#xff0c;安装flannel 到/opt/cni/bin/目录下即可。具体步骤往下看。 [rootK8SMaster ~]# journalctl -f -u kubelet.service 先看下报错&#xff0c;发现我一直显示NotReady的原因是由于 [faile…

windows系统安装显卡驱动软件和CUDA11.1的详细教程

深度学习目标检测框架在进行图像计算时需要GPU进行加速&#xff0c;需要用到硬件GPU显卡&#xff0c;目标检测框架和硬件GPU建立联系需要通过①显卡驱动软件&#xff1b;②CUDA软件依次建立联系。这两个软件&#xff0c;可直接从NVIDIA官网下载&#xff0c;版本没有非常严格的需…

【玩转Linux操作】详细讲解Linux的 at定时任务

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Counting Stars】 欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;基本介绍⭐怎么保证atd进程启动了 &#x1f354;at命…