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

Redis的补充和RESP

Redis的补充和客户端

  • 一.类型补充
    • 1.Stream
    • 2.Geospatial
    • 3.HyperLogLog
    • 4.Bitmaps
    • 5.Bitfields
  • 二.渐进式遍历
    • scan
  • 三.数据库命令
    • 1.Select
    • 2.DBSIZE
    • 3.flushdb
    • 4.flushall
  • 四.RESP

一.类型补充

1.Stream

Redis Stream 是 Redis 5.0 引入的一种数据结构,专为高效处理消息流和事件日志设计。它结合了日志的持久化特性和消息队列的消费组模式,适用于实时数据处理、消息队列、事件溯源等场景。

相关命令:

在这里插入图片描述

2.Geospatial

Redis 的 Geospatial 是一种基于 Sorted Set(有序集合) 实现的地理位置数据类型,用于存储和查询地理坐标(经度、纬度)。它通过 GeoHash 编码 将经纬度转换为一个 52 位的整数分数(作为 Sorted Set 的 score),从而支持高效的地理位置范围查询和距离计算。

在这里插入图片描述

在这里插入图片描述

命令:
在这里插入图片描述

3.HyperLogLog

HyperLogLog 是 Redis 提供的一种概率型基数估计算法,用于高效统计一个集合中不重复元素的数量(即基数)。

在这里插入图片描述
在这里插入图片描述

命令:

在这里插入图片描述

4.Bitmaps

Bitmaps 是 Redis 中基于 String 类型 实现的二进制位操作结构,通过将字符串视为二进制位数组(每个位只能存储 0 或 1),支持高效的位级读写和统计。

在这里插入图片描述

命令:

在这里插入图片描述

5.Bitfields

BITFIELD 是 Redis 中用于对 String 类型键进行位级结构化操作的命令。它将字符串视为一个由多个整数字段组成的位数组,允许对不同位宽的字段进行读写、递增等操作,特别适用于高效存储和操作多个紧凑的整数值。

在这里插入图片描述

基础命令:
在这里插入图片描述

二.渐进式遍历

Redis 中的 渐进式遍历(Incremental Iteration) 是一种高效遍历大量数据的机制,旨在避免长时间阻塞服务器,保障服务的响应性和可用性。其核心通过 SCAN 系列命令(如 SCAN、HSCAN、SSCAN、ZSCAN)实现,替代了阻塞式的 KEYS、SMEMBERS 等命令。

scan

以渐进式的方式遍历key

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

scan命令渐进式过程图:

cursor是光标,光标指向了当前遍历的位置,count代表获取几个元素。

如果光标设置为0,意味着这次遍历从头开始获取。

返回值的前半部分,提示用户下次遍历光标起始位置,后面的数据就是真正遍历到的key的内容。

需要注意的是,cursor不是一个连续递增的整数的下标,只能理解为仅仅是一个字符串,无法知道其中的规律,只有redis的服务器知道这个光标对应元素的位置。
在这里插入图片描述

演示:

第一个11代表下一次光标的起始位置,后续的数据代表这次查询到的key有哪些:
在这里插入图片描述

scan是有可能返回空集合的,当下一次的光标起始位置为0的时候,就已经将key遍历结束了。
在这里插入图片描述

count输入3,代表查询的key是大约3个,而不是一定为3个。
在这里插入图片描述

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

渐进式遍历scan虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,在实际开发中必须考虑这个点。

三.数据库命令

1.Select

redis中的databases是现成的,用户无法创建和删除,这是与MySQL不同的地方,并且redis的database只有16个,下标是0~15,默认情况下是0.

在这里插入图片描述

演示:
查询其他database时,会有一个[],中间的数字代表是第几个database.
在这里插入图片描述
在这里插入图片描述

2.DBSIZE

获取当前数据库的key个数

在这里插入图片描述
演示:
在这里插入图片描述

3.flushdb

删除当前数据库中的所有key,ASYNC是异步的,SYNC是同步的

在这里插入图片描述
在这里插入图片描述
演示:

在这里插入图片描述

4.flushall

删除所有数据库中的所有key

在这里插入图片描述
在这里插入图片描述

演示:
在这里插入图片描述

四.RESP

RESP protocol spec是redis自定义的应用层的协议名字,知道了redis应用层的协议就能够自定义开发一个redis的客户端。

redis的应用层协议官方英文文档

RESP协议的优点

  • 简单好实现
  • 快速进行解析
  • 肉眼刻度
  • 传输层基于TCP,但是和TCP又没有强耦合
  • 请求和相应之间的通信模式是一问一答的形式
http://www.dtcms.com/a/100010.html

相关文章:

  • 【工具】BioPred一个用于精准医疗中生物标志物分析的 R 软件包
  • C# StreamReader/StreamWriter 使用详解
  • 什么是 RBAC 权限模型?
  • jmeter web压力测试 压测
  • Android学习总结之算法篇三(打家劫舍)
  • 蓝桥杯—最小公倍数
  • Linux系统之dump命令的基本使用
  • Linux系统禁用swap
  • Xenium | 细胞邻域(Cellular Neighborhood)分析(fixed radius)
  • Spring AI MCP Server + Cline 快速搭建一个数据库 ChatBi 助手
  • QML编程中的性能优化二
  • C语言指针2
  • 2024蓝桥杯省赛C/C++大学B组 题解
  • [物联网iot]对比WIFI、MQTT、TCP、UDP通信协议
  • S32K144的SDK库中两种时钟初始化的区别(二)
  • MSTP和链路聚合
  • Nginx—nginx.conf 配置结构详解
  • Linux进程管理之进程间通信的相关知识(映射、管道(Pipe)通信、命名管道(FIFO)、消息队列、信号量、信号)
  • ctfshow WEB web8
  • 【Docker】Dockerfile 优化工具 hadolint
  • 普通人使用AI心得
  • 推挽振荡 ZVS 电路
  • RK3588S与RK3588S2差异说明
  • Java String 与 StringBuffer 深入解析:特性、实现与最佳实践
  • IO流学习
  • 蓝桥云课 飞机降落
  • 【CSS】解决因float而导致的父类塌陷问题
  • 【云原生】Keycloak认证登录Grafana
  • 算法-贪心算法
  • Attention is All you Need阅读笔记