Redis-渐进式遍历scan的使用

目录

1、为什么使用渐进式遍历?

2、scan的使用

3、渐进式遍历的缺点

4、补充知识点:redis中也区分database 


1、为什么使用渐进式遍历?

        前面的博客中,我们有提到使用keys *来获取所有的key,但这种办法,当Redis中存储的有很多key时,实行此命令所耗费的时长就会很长,不符合使用规范,redis一般情况下,都会要求命令执行时,短平快~

         因此提出使用渐进式遍历,也就是说,在不能使用keys *的情况下,我又想获取redis中的所有的key,就需要使用渐进式命令,所谓渐进,就是循序渐进,我们一次取出一点,直到取完~

        渐进式命令,有一组命令,我们暂时只介绍一种scan,其他命令的使用都是一样的~


2、scan的使用

  • scan:渐进式遍历redis中当前数据库中的数据库键key
  • 语法:scan cursor [MATCH pattern] [COUNT count] [TYPE type]
  • 参数说明1:cursor->光标位置。填写光标位置,就从指定位置开始往后遍历
  • 参数说明2:MATCH->通配符参数,和keys命令一样~
  • 参数说明3:COUNT->往后遍历多少个元素【默认为10】
  • 参数说明4:TYPE->指定只遍历某个数据类型
  • 返回值:类似于一个二元组,第一个元素为下一次遍历时从哪个光标开始【为0时,说明遍历结束】;第二个元素是一个列表,此次遍历所取到的key有哪些~

举例:


3、渐进式遍历的缺点

  •  渐进式遍历时,虽然解决了阻塞问题,但是如果遍历期间,redis内部的key有所变化,可能会导致遍历中的key会重复遍历,或者是遗漏~

4、补充知识点:redis中也区分database 

  • redis中,页存在database,平时我们会默认使用0号database;
  • redis中,默认提供了16了database
  • 使用命令select dbIndex来切换不同的database
  • 命令flushall是删除所有database中的所有key;
  • 命令flushdb是删除当前database中的偶有key; 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5学习笔记(1)——从源码开始编译安装UE5

目录 0. 前期准备1. Git bash here2. 克隆官方源码。3. 选择安装分支4. 运行Setup.bat,下载依赖文件5. 运行GenerateProjectFiles.bat生成工程文件6. 生成完成,找到UE5.sln/UE4.sln7. 大功告成 0. 前期准备 0.1 在windows的话,建议装一个Git…

HarmonyOS/OpenHarmony应用开发-DevEco Studio新建项目的整体说明

一、文件-新建-新建项目 二、传统应用形态与IDE自带的模板可供选用与免安装的元服与IDE中自带模板的选择 三、以元服务,远程模拟器为例说明IDE整体结构 1区是工程目录结构,是最基本的配置与开发路径等的认知。 2区是代码开发与修改区,是开发…

Vim的基础操作

前言 本文将向您介绍关于vim的基础操作 基础操作 在讲配置之前,我们可以新建一个文件 .vimrc,并用vim打开在里面输入set nu 先给界面加上行数,然后shift ;输入wq退出 默认打开:命令模式 在命令模式中&#xff1a…

Nautilus Chain 引入 $NAUT 通证,延续 $ZBC 的价值

近日,在 Zebec 治理系统中上线了一个全新的提案,即社区投票是否推出 $NAUT 通证,以作为 Nautilus Chain 上的原生通证。该提案以 98% 以上的支持率投票通过,这意味着 Nautilus Chain 将在 Nautilus Chain 上推出 $NAUT 通证。不过…

golang for循环append的数据重复

原因,因为使用了& 需要增加一行,问题解决

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

目录 一、使用深度学习中的循环神经网络(RNN)或长短时记忆网络(LSTM)生成诗词二、优化:使用双向 LSTM 或 GRU 单元来更好地捕捉上下文信息三、优化:使用生成对抗网络(GAN)或其他技术…

大数据技术准备

Hbase:HBase 底层原理详解(深度好文,建议收藏) - 腾讯云开发者社区-腾讯云 Hbase架构图 同一个列族如果有多个store,那么这些store在不同的region Hbase写流程(读比写慢) MemStore Flush Hbas…

【深度学习】Pytorch 系列教程(十三):PyTorch数据结构:5、数据加载器(DataLoader)

目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、张量(Tensor) 2、张量操作(Tensor Operations) 3、变量(Variable) 4、数据集(Dataset) 5、数据加载器&#x…

Unity3D URP 仿蜘蛛侠风格化BloomAO

Unity3D URP 仿蜘蛛侠风格化Bloom&AO BloomBloom效果流程:制作控制面板VolumeComponent.CSCustom Renderer FeatherCustom Renderer PassBloom ShaderComposite Shader 完善Custom Feather风格化AO 总结 本篇文章介绍在URP中如何进行风格化后处理,使…

MQ的初步了解

目录 什么是MQ? 为什么要用MQ(MQ的优点)? MQ的缺点 常用的MQ产品 MQ使用中的常见问题 什么是MQ? 【1】MQ:MessageQueue,消息队列。 队列,是一种FIFO 先进先出的数据结构。消息由…

基于SpringBoot的驾校管理系统

基于SpringBootVue的驾校管理系统、前后端分离 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、用户、教练 管理员&#x…

Python 可迭代对象、迭代器、生成器

可迭代对象 定义 在Python的任意对象中,只要它定义了可以返回一个迭代器的 __iter__ 魔法方法,或者定义了可以支持下标索引的 __getitem__ 方法,那么它就是一个可迭代对象,通俗的说就是可以通过 for 循环遍历了。Python 原生的列…