【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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux本地WBO创作白板部署与远程访问

文章目录 前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 前言 WBO在线协作白板是一个自由和开源的在线协作白板,允许多个用户同时在一个虚拟的大型白板上画图。该白板对所有线上用…

python的socket模块以及通信相关学习笔记

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯(最初设计是为了是使同一台计算机中的不同进程进行信息传递通信),最后拓展到可以使网络上两台计…

redis-持久化

目录 一、RDB RDB触发保存的两种方式 优劣势总结 二、AOF AOF持久化流程: 1、开启AOP 2、异常恢复 3、AOF的同步频率设置 4、ReWrite压缩 5、优劣势总结 Redis 4.0 混合持久化 redis是内存数据库,所有的数据都会默认存在内存中,如…

python爬虫SHA案例:某直播大数据分析平台

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、找出需要加密的参数 js运行 atob(‘aHR0cDovL3d3dy5oaDEwMjQuY29tLyMvc2VhcmNoL3NlYXJjaA’) 拿到网址,F12打…

原理Redis-ZipList

ZipList 1) ZipList的组成2) ZipList的连锁更新问题3) 总结 1) ZipList的组成 ZipList 是一种特殊的“双端链表” ,由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作, 并且该操作的时间复杂度为 O(1)。 ZipListEntry: ZipList 中的Entry并不像…

re 2019安洵杯复现

game 64位elf,ollvm混淆,直接用deflat就能去混淆 展示的是去除之后 arr[ 1,0,5,3,2,7,0,0,8,8,0,9,0,5,0,0,2,0,0,7,0,0,1,0,5,0,3,4,9,0,1,0,0,3,0,0,0,1,0,0,7,0,9,0,6,7,0,3,2,9,0,4,8,0,0,6,0,5,4,0,8,0,9,0,0,4,0,0,1,0,3,0,0,2,1,0,3,0,7,0,4] f…

【小呆的力学笔记】有限元专题之循环对称结构有限元原理

文章目录 1. 循环对称问题的提出2. 循环对称条件2.1 节点位移的循环对称关系2.2 节点内力的循环对称关系 3. 在平衡方程中引入循环对称条件 1. 循环对称问题的提出 许多工程结构都是其中某一扇面的n次周向重复,也就是是周期循环对称结构。如果弹性体的几何形状、约…

【zabbix监控四】zabbix之监控tomcat服务报警

一、监控tomcat服务是否正常运行 1、客户端部署 首先要在zabbix-agent客户端上安装tomcat服务,并能正常启动和关闭 1.1 客户端编写脚本 vim /opt/tomcat.sh#!/bin/bash anetstat -natp |grep 8080|awk {print $6}|grep LISTEN if [[ $a LISTEN ]];thenecho &qu…

redis非关系型数据库(缓存型数据库)——中间件

【重点】redis为什么这么快?(应届) ①redis是纯内存结构,避免磁盘I/O的耗时 ②redis核心模块是一个单进程,减少线程切换和回收线程资源时间 ③redis采用的是I/O的多路复用机制(每一个执行线路可以同时完…

原理Redis-Dict字典

Dict 1) Dict组成2) Dict的扩容3) Dict的收缩4) Dict的rehash5) 总结 1) Dict组成 Redis是一个键值型(Key-Value Pair)的数据库,可以根据键实现快速的增删改查。而键与值的映射关系正是通过Dict来实现的。 Dict由三部分组成,分别…

深入了解原型与原型链

1、[[Prototype]] JS中的对象有一个特殊的 [[Prototype]] 内置属性,其实就是对于其他对象的引用。几乎所有的对象在创建时 [[Prototype]] 属性都会被赋予一个非空的值。 var anotherObject {a:2 }; // 创建一个关联到 anotherObject 的对象 var myObject Object…

代码随想录算法训练营第二十九天| 491 递增子序列 46 全排列

目录 491 递增子序列 46 全排列 491 递增子序列 在dfs中进行判断,如果path的长度大于1,则将其添加到res中。 本题nums中的元素的值处于-100与100之间,可以将元素映射0到199之间并且通过布尔数组st来记录此层中元素是否被使用过,…

WordPress画廊插件Envira Gallery v1.9.7河蟹版下载

Envira Gallery是一款功能强大的WordPress画廊插件。通过使用这个插件,你可以在WordPress的前台页面上创建出令人赏心悦目的图片画廊展示形式。 拖放生成器:轻松创建精美照片和视频画廊 自定义主题,打造独特外观 使用预设模板,为…

运动耳机怎么选?运动耳机哪个好?蓝牙无线运动耳机排行榜10强

​说起耳机,相信大家都比较熟悉,特别是对于喜欢运动的爱好人士来说,那更是随身携带着。随着运动耳机的增长,大家都不知道该如何选择了。对于运动耳机除了需要佩戴稳固舒适之外,还有就是音质表现、防水性能、通话质量等…

智能井盖传感器建设信息化时代智慧城市

近年来随着信息技术的快速发展和城市化进程的加速推进,智慧城市的概念逐渐成为现实。作为智慧城市生命线建设中的重要组成部分,智能井盖传感器的应用正在为城市的可持续发展和居民的生活质量提供新的解决方案。 智能井盖传感器能够实时监测井盖状态&…

Windows 安装 Docker

目录 前言安装 WSL2WSL2 简介系统要求安装步骤 安装 Docker Desktop下载安装验证 安装 Docker Compose结语开源项目 前言 下图展示了在 Windows 系统上安装 Docker,并利用Docker Compose一键搭建 youlai-mall 微服务商城所需的环境。本篇将先介绍 Windows 上如何安…

【OpenCV】仿射变换中cv2.estimateAffine2D 的原理

目录 一、介绍 二、仿射变换矩阵 (M) 1.M中六个元素的说明 2.计算旋转角度 3.M的计算过程 三、输出状态 (inliers) 四、错切参数 1.错切参数的定义 2.错切参数例子 (1)水平错切 (2)垂直错切 一、介绍 cv2.estimateAffi…

K8S(一)

一、kubernetes 概述 1、kubernetes 基本介绍 kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效…

数据保密新标杆:迅软DSE企业防泄密系统为企业安全保驾护航

由于目前数据安全防护边界越来越大,企业面临的内部安全风险正在快速增长;企业内部安全防护体系和管理制度一旦有所缺失,就会造成严重的数据泄露安全事故。面对互联网泄密事件层出不穷,企业管理者们对于企业数据安全管理如何落实到…

教你怎样查询现货黄金的历史价格

现货黄金投资者可以在日常使用的软件MT4在的终端窗口中,查询金价的历史数据和动态的价格行情,甚至可以把这些导出,作为日后的深入分析之用,我们将通过本文和大家分享MT4导出这些数据的具体方法。 具体操作: 在MT4交易…