Redis中一些其他的数据类型渐进式遍历

news2024/11/20 16:35:58

  我们之前说了redis中的五个类型 分别是:String List Hash Set ZSet,那除了这五个redis文档中还给我们提供了一些其他的数据类型

  (一)一些其他的数据类型

 1.stream

  这里的数据类型我们只做简单的一些介绍,如果想了解具体要怎么做的,我们可以去redis官网中看看

  Redis 中Stream是一种强大的数据结构,用于处理数据流,类似于消息队列或只读日志。它适用于需要实时流处理、可扩展性、持久性和可靠消息传输的应用程序。

主要优势:
实时流式传输:实时向多个消费者传输数据。
可扩展性:处理大量消息。
持久性:确保可靠的消息传递和重播功能。
消费者组:允许多个消费者从同一流中读取数据。

2.geospatial

  这个命令通常是用来存储一个坐标的,而且在其中,我们可以通过一个坐标来对其他坐标进行范围查找,所以这个功能在地图中被广泛运用

这就是这个数据类型的一个简单命令

使用Redis获取地理空间数据的好处:

低延迟和高吞吐量:内存数据存储确保快速查询响应。

可伸缩性:有效地处理大量地理空间数据。

实时功能:非常适合需要即时位置查询的应用程序,如交付跟踪或商店定位器。

3.hyperloglog

  这个数据结构的应用场景只有一个,用来估算集合中的元素个数

  那这时候我们就有疑问,我们set中不是有scard来计算有多少元素嘛,为啥还要用这个数据类型呢?

  这是因为set是会切实的存储我们的数据就会导致我们的数据会占用我们很多的内存空间,而hyperloglog不会,他不会存储元素内容,但是他会通过一些元素的特征,在我们新增元素的时候,能够知道这个新增的元素是不是一个已经存在的元素,如果是不存在的,就会入集合(通过hyperloglog这个数据类型,可以将我们的空间控制在12kb内)

  但是这个是有误差的,我们说是通过一些元素的特征,那如果有两个元素特征一样。就会误以为元素的重复的,所以我们这里会有一个大概0.81%的误差存在

4.bitmap

 bitmap叫做位图,其实还是一个集合,但是是Set类型针对整数的一个特化版本,把一个个字节来当作数字进行存储,更加的节省空间

5.bitfield

   Redis位域允许你设置、增加和获得任意位长度的整数值,使用二进制编码的Redis字符串存储。位字段支持原子读、写和自增操作。

(二)渐进式遍历

 我们之前在说到keys *这个命令的时候我们说会因为一次性获取太多数据导致redis卡住了,然后回导致一系列问题,那如果我们一定要获取全部key就要进行拆分,一次获取一部分,这样多次获取就可以完成获取到所有key的操作

  渐进式遍历是一组命令,这一组命令的使用方法都是一样的,所以我们这里用SCAN来举例子

 首先我们cursor叫做光标,他指向了当前遍历的位置如果为0就表示这次的遍历从头开始获取 ,match pattern和keys的命令是一样的,也是类似于keys h?llo的效果,count是给这个命令的返回值提供一个参考,也就是要返回大概多少个元素(默认是10),type就是指定要查询的类型

 然后我们来看返回值,这个1)后的这个数字表示我们下一次的cursor应该从哪里开始,但是这个值并不是我们访问到哪一个元素了,只是一个字符串不是下标,所以只有redis服务器知道这个光标对应的一个元素位置。然后2)后的就是本次查询的元素

  同时我们要注意,count里的数字不需要每次都设置成一样的,这里的渐进式遍历是无状态的,遍历过程中不会在服务器里存储信息,所以我们的遍历是可以随时终止的

  但是渐进式遍历也有一定的风险,如果我们在渐进式遍历的期间,进行插入,删除操作,就会导致遍历时有所遗漏或者重复,但是这个也不知存在于渐进式遍历,其实所有遍历都会有这个问题

(三)database

 我们之前在学习mysql的时候有一个概念叫做database,一个mysql服务器上有很多database,一个database有很多个table,我们称为关系型数据库。

 那我们学习redis的时候只是说了是键值对的方式存数据,好像没有说到类似database这样的概念,但是其实我们redis是有的,只是不常用,而且我们对于数据库的操作也是极其有限的,不像mysql一样可以手动创建和删除

 redis默认给我们提供了16个数据库,分别是0-15号,这些数据库间的数据是隔离的,如果我们使用了一个数据库,那么就无法直接访问到另一个数据库的数据,默认情况下我们使用0号数据库

 我们通过这个命令就可以更改我们目前使用的数据库,我们之前讲过的flushall就是删除所有库上的所有key,我们还有个命令叫flushdb,是删除当前库上的所有操作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ | Leetcode C++题解之第452题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; class Solution { public:int findMinArrowShots(vector<vector<int>>& points) {if (points.empty()) {return 0;}sort(points.begin(), points.end(), [](const vector<int>& u, const vector<int>&…

[云] Hands-on with a sample application--DockerCoins 挖矿程序!

DockerCoins 挖矿程序&#xff01;&#x1f4b0;&#x1f433;&#x1f4e6;&#x1f6a2; 不&#xff0c;你不能用 DockerCoins 买咖啡。 DockerCoins 如何工作&#xff1a; 生成一些随机字节&#xff1a; 程序首先生成一串随机的字节数据。这些随机字节用于模拟挖矿过程中的…

Pytorch实现玉米基因表达量预测模型

一、实验要求 通过搭建残差卷积网络&#xff0c;实现对玉米基因表达量的预测 二、实验目的 理解基因表达量预测问题&#xff1a;基因表达预测是生物信息学和基因组学领域中的重要任务之一&#xff0c;促进学科交叉融合。熟悉深度学习框架PyTorch&#xff1a;通过实现基因表达量…

Golang | Leetcode Golang题解之第453题最小操作次数使数组元素相等

题目&#xff1a; 题解&#xff1a; func minMoves(nums []int) (ans int) {min : nums[0]for _, num : range nums[1:] {if num < min {min num}}for _, num : range nums {ans num - min}return }

nodejs --- 使用全球公认头像gravatar

目录 历史&#xff1a;阿凡达 什么是头像&#xff1f; 我为什么要添加 Gravatar&#xff1f; 我怎样才能得到一个Gravatar&#xff1f; 开发者使用 功能描述 安装和使用 实践应用 我们他们名字旁边的灰色图标是怎么出现的。那么这个灰色图标被称为“神秘人”gravatar。…

IT新秀系列:Go语言的兴起

Go语言&#xff08;Golang&#xff09;由谷歌于2007年发起&#xff0c;并于2009年正式开源。它的诞生背景可以追溯到互联网技术的高速发展时期。那时&#xff0c;软件开发面临着多核计算、大规模并发处理、部署和维护效率低下等挑战。作为一种新型的编程语言&#xff0c;Go主要…

Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)

续Nginx基础详解4&#xff08;location模块、nginx跨域问题的解决、nginx防盗链的设计原理及应用、nginx模块化解剖&#xff09;-CSDN博客 目录 14.nginx集群&#xff08;前传&#xff09; 14.1如何理解单节点和集群的概念 14.2单节点和集群的比较 14.3Nginx中的负载均衡…

指纹定位的原理与应用场景

目录 原理 1. 信号特征收集 2. 定位算法 推导公式 距离估算公式 定位算法公式 使用场景 发展前景 指纹定位是一种基于无线信号强度(如Wi-Fi、RFID、蓝牙等)来实现室内定位的技术。它借助于环境中多个基站的信号特征来推断用户的位置。以下是对指纹定位的详细讲解,包…

Spring Boot技术交流平台的设计与实践

3 系统分析 3.1 可行性分析 为了研究问题并确定问题是否能够在最短的时间内以最低的成本解决&#xff0c;经过对该项目的详细调查研究&#xff0c;初步准备了系统的实施报告&#xff0c;面临的问题和解决方案在软件开发方面进行了初步设计和合理安排&#xff0c;确定了开发目标…

Geoserver关于忘记密码的解决方法

第一次安装后&#xff0c;如果你设置密码那一栏一直都是默认的话&#xff0c;那么登录密码应该是账户 admin&#xff0c;密码 geoserver 但是&#xff0c;如果你自己设置了密码和账户&#xff0c;登录又登录不上&#xff0c;或者忘记了&#xff0c;有以下方法可以解决。 本质…

Hive数仓操作(九)

一、Hive的DQL查询顺序 HQL语法基本上与传统的SQL一致&#xff0c;包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY和LIMIT等关键步骤 SELECT * -- 1. 选择所有列 FROM employees -- 2. 数据来源是 employees 表 WHERE salary > 3000 -- 3. 筛选工资大于 3000 的…

AI在医学领域:Arges框架在溃疡性结肠炎上的应用

溃疡性结肠炎&#xff08;UC&#xff09;是一种慢性炎症性肠病&#xff08;IBD&#xff09;&#xff0c;在全球大约影响着500万人&#xff0c;导致肠道炎症和溃疡。在UC的临床试验中&#xff0c;通常通过内窥镜视频来评估结肠疾病的严重程度&#xff0c;并使用如Mayo内窥镜下分…

leetcode_198_打家劫舍

思路&#xff1a;首先定义一个数组对于dp[i]读作1->i能获取的最大利益&#xff0c;第i个房屋只有"偷"和不"偷"两种情况&#xff0c;分别进行讨论 "偷": 既然"偷"了 i那就肯定不能偷i-1了,但是为了使"偷"的尽可能多除了必…

Microsoft 解釋修改後的 Recall 將如何保障隱私與安全

Microsoft 為 Copilot AI 電腦推出的 Recall 功能&#xff0c;本意是藉由定期進行螢幕截圖&#xff0c;並分析上面的資訊&#xff0c;來協助用戶找到查看過的網頁、工作過的文件等各種資訊。然而雖然立意很好&#xff0c;但 Microsoft 推出之初似乎完全沒有考慮到用戶的隱私安全…

多区域OSPF路由协议

前言 之前也有过关于OSPF路由协议的博客&#xff0c;但都不是很满意&#xff0c;不是很完整。现在也是听老师讲解完OSPF路由协议&#xff0c;感触良多&#xff0c;所以这里重新整理一遍。这次应该是会满意的 一些相关概念 链路状态 链路指路由器上的一个接口&#xff0c;链路状…

Pikachu-Cross-Site Scripting-DOM型xss

DOM型xss DOM型XSS漏洞是一种特殊类型的XSS,是基于文档对象模型 Document Object Model (DOM)的一种漏洞。是一个与平台、编程语言无关的接口&#xff0c;它允许程序或脚本动态地访问和更新文档内容、结构和样式&#xff0c;处理后的结果能够成为显示页面的一部分。 dom就是一…

【微服务】初识(day1)

基础概念 集群 集群是将一个系统完整的部署到多个服务器&#xff0c;每个服务器提供系统的所有服务&#xff0c;多个服务器可以通过负载均衡完成任务&#xff0c;每个服务器都可以称为集群的节点。 分布式 分布式是将一个系统拆分为多个子系统&#xff0c;多个子系统部署在…

LeetCode[中等] 279.完全平方

给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11 不是。 1…

【转载翻译】消息队列 - ActiveMQ、RabbitMQ、Kafka、ZeroMQ

转载自本人博客&#xff1a;【转载翻译】消息队列 - ActiveMQ、RabbitMQ、Kafka、ZeroMQ 转载自&#xff1a;The System Design Cheat Sheet: Message Queues - ActiveMQ, RabbitMQ, Kafka, ZeroMQ 本文由 Aleksandr Gavrilenko 发布于2023年12月21日 1. 前言 消息队列是异步服…

NASA:ATLAS/ICESat-2 L3B 平均内陆地表水数据 V002

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Mean Inland Surface Water Data V002 ATLAS/ICESat-2 L3B 平均内陆地表水数据 V002 简介 ATLAS/ICESat-2 L3B Mean Inland Surface Water Data V002是由NASA的ICESat-2 (Ice,…