当前位置: 首页 > news >正文

类型补充,scan 和数据库管理命令

Redis 数据类型

stream

stream 就是一个队列(阻塞队列)

Redis 作为一个消息队列的重要支撑,属于是 list 中 blpop 和 brpop 的升级版本

geospatial

主要用于存储地理位置信息,并对存储的信息进行操作

存储一些点后,通过给定的坐标,去存储的点里去查找(按照半径,矩形区域)

一般在“地图”中应用广泛

hyperloglog

应用场景只有一个,估算集合中的元素个数

set 存储 userId ,每个 userId 按照 8个字节计算

1 亿 UV ——> 8 亿字节 ——> 0.8 G

使用 set 非常消耗空间(set 需要存储每个元素)

hyperloglog  可以使用最多 12 kb 空间实现上述效果

hyperloglog 不存储元素的内容,但是记录“元素的特征”,从而在新增元素的时候,判断该元素是否已经添加了(位操作)

hyperloglog 简单来说就是用来记数的,但是不能返回具体的每个元素(准确的存在一定的误差)

bitmap

使用 bit 表示整数

位图本质上是一个集合,属于 set 类型针对整数的特化版本

节省空间,运算高效

bitfield

位域,可以理解成一串二进制序列(字节数组)

同时可以把这个字节数组中某几位,赋予特定的含义,并且可以进行读取/修改/算数运算 相关操作

相较于 string / hash ,目的仍然是节省空间

渐进式遍历 - scan

Redis 使用 scan 命令进行渐进式遍历,进而解决直接使用 keys 获取键时可能出现的阻塞问题

每次 scan 命令 O(1),但是要完整的遍历所有的 key ,需要执行多次 scan

scan cursor [match patter] [Count count] [Type type]

返回下一次 scan 的游标(cursor)以及本次获取到的键

1)首次 scan 从 0 开始

2)当 scan 返回的下次位置为 0 时,遍历结束

1)pattern  和 keys 命令一样,scan 命令也可以通过提供一个 glob 风格的模式参数, 让命           令只返回和给定模式相匹配的元素

2)count  限制本次返回的元素个数(与实际返回可能不同,相当于给服务器的一种“建议”)

3)type  Redis 里的 key 都是 string,但是 value 的类型是不一样的

4)cursor 不能理解成“下标”,其不是一个连续自增的整数,只是一个“字符串”

          cursor 程序员 \ 客户端是不认识的,Redis 服务器可以知道 cursor 对应的位置

count 的数字,不是每次遍历都必须一样

此处的渐进式遍历,在遍历过程中,不会在服务器这边存储任何的状态信息,是随时可以种植的,不会对服务器产生任何负面影响

渐进式遍历是一组命令,使用方法相同,包括 hscan  sscan  zscan ...

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

数据库管理命令

切换数据库

MySQL 中的一个重要概念 —— 数据库

一个 MySQL 服务器上可以有多个 database ,一个 database 上可以有多个表

Redis 中也有数据库类似的概念,但是 Redis 中的 database 是现成的,用户不能创建新的数据库,也不能删除数据库,只能在现有的数据库中切换

Redis 默认提供了 16 个数据库  0 —— 15(数据库之间相互隔离)默认使用 0 号

无论是否有多个数据库,Redis 都是使用单线程模型,所以彼此之间还是需要排队等待命令
的执行

select dbIndex

 saync  异步      sync  同步

清空当前数据库中的所有 key

flush [async | sync]

返回 OK  O(N)

返回当前数据库中 key 的数量

dbsize 

返回当前数据库中 key 的数量

相关文章:

  • 一本通 2063:【例1.4】牛吃牧草 1005:地球人口承载力估计
  • 下载electron 22.3.27 源码错误集锦
  • 记录一次问题排查,前台传的日期参数到后台取到的时候少了一天。
  • 考研系列-计算机网络-第二章、物理层
  • IntelliJ IDEA clean git password
  • 广搜bfs-P1443 马的遍历
  • 8.Rust+Axum 数据库集成实战:从 ORM 选型到用户管理系统开发
  • Python爬虫实战: 有道翻译
  • Qt 创建QWidget的界面库(DLL)
  • Jenkins 多分支管道
  • 主动防御VS自动化筛查:渗透测试与漏洞扫描的深度攻防指南
  • #systemverilog# 进程控制问题#(八)关于#0 问题的使用(三)
  • shell脚本
  • 基于Ubuntu22.04和OpenCV4.5.4的物联网人脸识别考勤机
  • SpringBoot私人西服系统开发与设计
  • FreeRTOS任务通知
  • linux如何手动设置域名与 IP 地址的映射关系
  • iOS 冷启动时间监控:启动起点有哪些选择?
  • 从零构建 Vue3 登录页:结合 Vant 组件与 Axios 实现完整登录功能
  • 【Datawhale Al春训营】气象预测(AI+航空安全)竞赛笔记
  • 锚定“双一流”战略坐标,福建农林大学向全球英才“伸出橄榄枝”
  • 体育公益之约跨越山海,雪域高原果洛孕育足球梦
  • 中国太保一季度净赚96.27亿元降18.1%,营收同比下降1.8%
  • 第三款在美获批的国产PD-1肿瘤药来了,影响多大?
  • 证监会发布上市公司信披豁免规定:明确两类豁免范围、规定三种豁免方式
  • 生态环境法典草案拟初审:应对气候变化等问题将作原则性规定