【Redis】渐进式遍历数据库管理

文章目录

  • 渐进式遍历
    • scan
  • 数据库管理
    • 切换数据库
    • 清除数据库
  • 获取当前数据库key的个数

渐进式遍历

Redis使⽤scan命令进⾏渐进式遍历键,进⽽解决直接使⽤keys获取键时能出现的阻塞问题。每次scan命令的时间复杂度是O(1),但是要完整地完成所有键的遍历,需要执⾏多次scan,每执行一次命令,只获取其中的一小部分,这样可以保证当前这一次操作不会阻塞redis服务器image-20231022110525573

  • ⾸次scan,光标设置为0,意味着这次遍历是从头开始获取,scan的返回值的前半部分1),是告诉你下次遍历光标要从哪个位置开始,2)才是真正遍历到的key的内容
  • 当scan返回的下次位置为0时,遍历结束

注意:此处的cursor不能理解为下标,并不是一个连续递增的整数,仅仅是一个字符串


scan

以渐进式的⽅式进⾏键的遍历

语法:SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] 
  • MATCH pattern:匹配满足格式的key
  • COUNT count:限制这一次遍历能够获取到多少个元素
    • 此处的count和MySQL当中的limit不同,前者只是给redis服务器一个提示/建议,写入的count和实际返回的key的个数不一定完全相同,后者是精确的
  • Type type:表示要遍历获取什么数据类型的value,redis的key都是string,但是value的类型不一样!

返回值:下⼀次scan的游标(cursor)以及本次得到的键

注意:渐进性遍历scan虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏

image-20231024203912951

结果1):表示下次scan光标的位置 结果2):这次遍历拿到的key有哪些


注意:渐进式遍历在遍历过程当中,不会在服务器这边存储任何的状态信息,可以随时终止,不会对服务器产生任何副作用


数据库管理

Redis提供了⼏个⾯向Redis数据库的操作,分别是dbsize、select、flushdb、flushall命令

切换数据库

select dbIndex 

Redis只是⽤数字作为多个数据库的实现。Redis默认配置中是有16个数据库,各个数据库互相不会有影响。select0操作会切换到第⼀个数据库,select15会切换到最后⼀个数据库,0号数据库和15号数据库保存的数据是完全不冲突的,有各⾃的键值对。默认情况下,我们处于数据库0

image-20231024204414958

image-20231022110813118

Redis中虽然⽀持多数据库,但是不是特别建议使⽤多数据库特性。真的需要完全隔离的两套键值对,更好的做法是维护多个Redis实例,⽽不是在⼀个Redis实例中维护多数据库,因为本⾝Redis并没有为多数据库提供太多的特性,其次⽆论是否有多个数据库,Redis都是使⽤单线程模型,所以彼此之间还是需要排队等待命令的执⾏。同时多数据库还会让开发、调试和运维⼯作变得复杂。所以实践中,始终使⽤数据库0其实是⼀个很好的选择


清除数据库

flushdb/flushall命令⽤于清除数据库

  • flushdb只清除当前数据库当中所有的key
  • flushall会清除所有数据库当中所有的key
FLUSHDB [ASYNC | SYNC]  //ASYNC:异步的  SYNC:同步的

获取当前数据库key的个数

DBSIZE

image-20231026221636487

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

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

相关文章

特征缩放和转换以及自定义Transformers(Machine Learning 研习之九)

特征缩放和转换 您需要应用于数据的最重要的转换之一是功能扩展。除了少数例外,机器学习算法在输入数值属性具有非常不同的尺度时表现不佳。住房数据就是这种情况:房间总数约为6至39320间,而收入中位数仅为0至15间。如果没有任何缩放,大多数…

Axure RP Pro 8 mac/win中文版:打造无限可能的原型设计工具

在如今的数字化时代,原型设计工具越来越受到设计师和产品经理们的重视。而Axure RP Pro8作为一款强大的原型设计工具,成为了众多专业人士的首选。 首先,Axure RP Pro8具备丰富的功能。它提供了多种交互元素和动画效果,使得用户可…

scapy No such device exists (No such device exists)

使用python编写一个小的网络程序时,程序如下: import scapy.all as scapydef scan(ip):arp_request ARP(pdstip)arp_request.show()broadcast scapy.Ether(dst "ff:ff:ff:ff:ff:ff")arq_request_broadcast broadcast/arp_requestanswered,…

DGL创建异构图

利用DGL创建具有3种节点类型和3种边类型的异构图 graph_data {# (src_type, edge_type, dst_type)(drug, interacts, drug): (th.tensor([0, 1]), th.tensor([1, 2])),(drug, interacts,, disease): (th.tensor([1]), th.tensor([2])) }g dgl.heterograph(graph_data)上述代…

cmake+OpenCV4.8.0+contrib4.8.0+cuda 12.2编译踩坑

cmakeOpenCV4.8.0contrib4.8.0cuda 12.2编译踩坑 准备工具 cmake (去官网下载)OpenCV 我下载的是官网发布最新的稳定版本对应的源码,官网目前是4.8.0,github下一个(连不上的可以网上找找资源或者科学上网&#xff09…

wpf devexpress Property Grid创建属性定义

WPF Property Grid控件使用属性定义定义如何做和显示 本教程示范如何绑定WP Property Grid控件到数据和创建属性定义。 执行如下步骤 第一步-创建属性定义 添加PropertyGridControl组件到项目。 打开工具箱在vs,定位到DX.23.1: Data 面板,选择Prope…

亚马逊云科技AI创新应用下的托管在AWS上的数据可视化工具—— Amazon QuickSight

目录 Amazon QuickSight简介 Amazon QuickSight的独特之处 Amazon QuickSight注册 Amazon QuickSight使用 Redshift和Amazon QuickSightt平台构建数据可视化应用程序 构建数据仓库 数据可视化 Amazon QuickSight简介 亚马逊QuickSight是一项可用于交付的云级商业智能 (BI…

Docker在Centos7下的安装

1、卸载旧版本 执行如下指令对旧版本进行卸载: sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 执行完毕后,如果输入docker version发现do…

js计算某个时间距离现在有几年几月几日几分几秒之前的方法

数据类型 使用js时间戳 console.log(Date.now()) //1642471441587 或者转化为时间戳才能使用 Date.parse(“2022/1/18 10:05”) //1642471500000 将时间戳转化成时间格式的方法如下–链接查看 https://mp.weixin.qq.com/s?__bizMjM5MDA2MTI1MA&mid2649121025&idx2&am…

android studio导入eclipse项目

网上下载一个老工程,.project文件里有eclipse。 android studio导入eclipse项目 eclipse项目结构 Android studio文件结构 下面是导入步骤: 第一步,打开一个项目。 选择File->New->Import Project 第二步,选择Eclipse项目根…

NX二次开发UF_CAM_ask_doc_template_name 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_doc_template_name Defined in: uf_cam.h int UF_CAM_ask_doc_template_name(const char * * doc_template_filename ) overview 概述 This function provides the name of the file th…

Linux mmap 的作用是什么?

文章目录 1.简介2.相关函数3.mmap和常规文件操作的区别4.作用参考文献 1.简介 mmap&#xff08;memory map&#xff09;即内存映射&#xff0c;用于将一个文件或其它对象映射到进程的地址空间。 2.相关函数 创建映射函数&#xff1a; #include <sys/mman.h>void *mm…

浅谈 JVM GC 收集器--系列(一)

又到一年大促时刻&#xff0c;今天我们一起探讨下JVM垃圾回收的问题&#xff0c;写代码的时候想一想如何减少FullGC问题的出现&#xff0c;因为一旦出现频繁FullGC&#xff0c;短时间内没有太好的解决办法&#xff0c;很有可能重启后服务接着FullGC&#xff0c;导致服务可用率降…

【运维篇】Redis常见运维命令详解

文章目录 1. 前言2. 连接管理命令详解2.1 AUTH命令2.2 PING命令2.3 SELECT命令2.4 QUIT命令 3. 服务器管理命令详解3.1 FLUSHALL命令3.2 SAVE/BGSAVE命令3.3 SHUTDOWN命令 4. 安全管理命令详解4.1 CONFIG命令4.1.1 CONFIG SET命令用法4.1.2 CONFIG GET命令用法 4.2 AUTH命令 5.…

海外代理IP如何找到靠谱的?

现在市面上有很多代理服务商&#xff0c;大家可以根据自己的需求选择一个适合自己业务的的IP代理服务商&#xff0c;现在也有一些免费的&#xff0c;但如果力求稳定安全&#xff0c;还是选择付费的。 这里提醒一句&#xff0c;在买代理IP时最好找这种可以免费试用的&#xff0…

kernel32.dll丢失都有什么解决办法,帮助大家解决kernel32.dll丢失的问题

kernel32.dll丢失是电脑中常出现的情况&#xff0c;今天就想和大脚聊聊这个kernel32.dll 文件&#xff0c;这个文件它的功能是干什么的&#xff0c;如果电脑中kernel32.dll 丢失都有什么解决办法&#xff0c;帮助大家解决kernel32.dll丢失的问题&#xff0c;本篇文章给大家提供…

鸿蒙:Harmony开发基础知识详解

一.概述 工欲善其事&#xff0c;必先利其器。 上一篇博文实现了一个"Hello Harmony"的Demo&#xff0c;今天这篇博文就以"Hello Harmony" 为例&#xff0c;以官网开发文档为依据&#xff0c;从鸿蒙开发主要的几个方面入手&#xff0c;详细了解一下鸿蒙开…

MIUI查看当前手机电池容量

MIUI查看当前手机电池容量 1. 按如下步骤操作生成bug报告 2. 按如下操作解压bug报告 Last learned battery capacity

分布式服务与分布式框架

分布式副武其实就是根据某个粒度&#xff0c;将服务拆分&#xff0c;而分布式框架就是将这些服务协调&#xff0c;管理起来。分布式框架&#xff0c;我认为服务调用是他的基础能力&#xff0c;该能力是所有分布式框架的基础能力&#xff0c;其次是服务注册与发现。 在这个维度…