[Redis][数据类型]详细讲解

news2024/11/15 4:33:19

1.Redis 特殊数据结构

1.Streams

  • 应用场景:主要用为队列(阻塞队列)

2.Geospatial

  • 应用场景:用来存储坐标(经纬度)

3.HyperLogLog

  • 应用场景:估算集合中的元素个数
  • 注意
    • HyperLogLog不存储元素的内容,但是能够记录“元素的特征”,从而在新增元素的时候,能够知道当前新增的元素,是一个已经存在的元素还是一个崭新的元素
    • 也就是说,HyperLogLog只能用来计数,记录当前集合中有多少个不同的元素,但是不能告诉用户这些元素都是啥
    • HyperLogLog存储元素的时候,提取特征的过程是不可逆的
  • 优势举例Set可以统计服务器的UV,假设Set存储userId,每个8字节,存储1亿个UV,则需要大概800MB,但是HyperLogLog只需要最多使用12KB空间,就可以实现上述效果

4.bitmaps

  • 应用场景:使用bit位来表示整数,本质上还是一个集合,属于是Set类型对整数的特化版本

5.bitfields

  • 理解:就是C中说到的位段,这里称为位域

2.渐进式遍历

1.是什么?

  • Redis使⽤scan命令进⾏渐进式遍历键,进⽽解决直接使⽤keys获取键时可能出现的阻塞问题。

  • 每次scan命令的时间复杂度是 O ( 1 ) O(1) O(1),但是要完整地完成所有键的遍历,需要执⾏多次scan

    • ⾸次scan从0开始
    • scan返回的下次位置为0时,遍历结束
      请添加图片描述
  • 注意:这里的渐进式遍历,在遍历过程中,不会在服务器这边存储任何的状态信息,此处的遍历,随时都可以终止,不会对服务器产生任何的副作用

  • 渐进式遍历其实是一组命令,这一组命令的使用方法是一样的,其中的代表是SCAN


2.SCAN

  • 功能:以渐进式的方式进行键的遍历
  • 语法SCAN cursor [MATCH pattern] [Count count] [Type type]
    • count:只是一个给Redis服务器的"提示/建议",写入的count和实际返回的key的个数不一定是完全相同的,但是不会差很多
  • 返回值
    • 下一次scan的游标cursor -> 下次继续遍历,光标要从哪里开始
      • cursor不能理解成下标,不是一个连续递增的整数,仅仅就是一个"字符串"
    • 以及本次得到键
  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 注意:渐进性遍历scan虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑
  • 说明:除了scan以外,Redis面向哈希类型、集合类型、有序集合类型分别提供了hscansscanzscan命令,用法和scan基本类似

3.数据库管理

  • Redis提供了⼏个⾯向Redis数据库的操作,分别是dbsizeselectflushdbflushall

1.切换数据库

  • 语法select dbIndex

  • 说明

    • 许多关系型数据库,例如MySQL⽀持在⼀个实例下有多个数据库存在的,但是**与关系型数据库⽤字符来区分不同数据库名不同,Redis只是⽤数字作为多个数据库的实现**
    • Redis默认配置中是有16个数据库。select 0操作会切换到第⼀个数据库,select 15会切换到最后⼀个数据库
    • 0号数据库和15号数据库保存的数据是完全不冲突的,即各种有各⾃的键值对。默认情况下,我们处于数据库0
      请添加图片描述
  • 注意:Redis中虽然⽀持多数据库,但随着版本的升级,其实不是特别建议使⽤多数据库特性

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

2.清除数据库

  • flushdb / flushall 命令⽤于清除数据库,区别
    • flushdb:只清除当前数据库
    • flushall:会清除所有数据库
  • 永远不要在线上环境执⾏清除数据的操作,除非想”从删库到跑路“😛

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

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

相关文章

【机器学习】ROC曲线

【机器学习】ROC曲线 1、ROC曲线简介2、ROC曲线和AUC值2.1 ROC曲线2.2 AUC值 3、实验内容3.1 准备数据集3.2 特征提取3.3 数据集划分3.4 模型训练与预测3.5 计算和绘制ROC曲线3.6 绘制混淆矩阵3.7 三分类混淆矩阵 4 源代码4.1 实现ROC二分类4.2 三分类混淆例子 1、ROC曲线简介 …

cnn机器学习时python版本不兼容报错

在使用python执行CNN算法时,发生如下报错: A module that was compiled using NumPy 1.x cannot be run in NumPy 2.1.1 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0. Some module may …

网络高级day03(Http)

目录 【1】HTTP简介 【2】 HTTP特点 【3】 HTTP协议格式 1》客户端请求消息格式 1> 请求行 2> 请求头 3> 空行 4> 请求数据 2》服务器响应消息格式 【1】HTTP简介 HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)的缩写&a…

低代码平台:数据筛选功能的全新变革

随着软件开发需求的不断增长,传统的开发方法因其复杂性和耗时性而逐渐无法满足市场对快速交付和迭代的需求。低代码开发平台作为一种新型的软件开发工具,以其高效、易用的特点受到了广泛的关注和应用。 在软件开发领域,数据筛选是一项基础且…

frpc内网穿透

官网地址:frp官网 本次用到的Liunx包: https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz下载: wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.g…

经典大语言模型解读(3):参数量更大、泛化性能更强的生成式模型GPT-2

概述 在GPT-1的基础上,OpenAI提出了包含15亿参数(GPT-1参数量的10倍以上)的GPT-2模型。该模型在一个更大规模的文本数据集WebText上进行预训练。与GPT-1依赖特定任务上的有监督微调来提升性能不同,GPT-2具备更强的零样本&#xf…

中小企业体系技术抽象沉淀-异地灾备篇

IT团队内部使用工具 系列文章:https://blog.csdn.net/caicongyang/article/details/136857045 DDL DML管控 https://github.com/hhyo/Archery/ flyway 文档编写 wiki 技术对外输出文档推荐gitbook 同城双活数据同步方案 总览: vivo 系列文章&#x…

脱离枯燥的CRUD,灵活使用Mybatis,根据mybatis动态的xml片段和接口规范动态生成代理类,轻松应付简单业务场景。

需求 需求是这样的,我们有一个数据服务平台的产品,用户先将数据源信息保存到平台上,一个数据源可以提供多个接口服务,而每个接口服务在数据库中存一个具有mybatis语法的sql片段。这样的话,对于一些简单的业务只需要编…

*C++:list

一.list简介 1. list 是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list 的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素…

一文 学透 力扣—N数之和

题目一:1. 两数之和❤ 题目思路 当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。 本题呢,我就需要一个集合来存放我们遍历过的元素,然后在遍历数组的时候去询问这个集合…

第一个NDK项目

新建项目 选择Native C的项目,我这里给项目的命名是NDKTest。 目录分析 新增了一个cpp目录,里面有一个CMakeLists和.cpp文件。 CMakeLists 文件是用来配置C编译过程的。 # Sets the minimum CMake version required for this project. cmake_minimum_…

[OpenCV] 数字图像处理 C++ 学习——16直方图均衡化、直方图比较 详细讲解+附完整代码

文章目录 前言1.直方图均衡化的理论基础(1)什么是直方图(2)直方图均衡化原理(3)直方图均衡化公式 2.直方图比较理论基础(1)相关性 (Correlation)——HISTCMP_CORREL(2)卡方 (Chi-Square)——HISTCMP_CHISQR(3)十字交叉性 (Intersection) ——HISTCMP_INTERSECT(4)巴氏距离 (Bha…

缓存的思考与总结

缓存的思考与总结 什么是缓存缓存命中率数据一致性旁路模式 Cache aside双写模式直写模式 write through异步写 Write Behind 旁路和双写 案例 新技术或中间的引入,一定是解决了亟待解决的问题或是显著提升了系统性能,并且这种改变所带来的增幅&#xff…

Mysql删库跑路,如何恢复数据?

问题 删库跑路,数据还能恢复吗? 我们经常听说某某被领导训斥了,对领导心生痛恨,然后登录 Mysql 删库跑路。对于闲聊中经常听说过的一个段子,在现实生活中是否真的发生过,如果发生了,我们该如何解…

基于单片机的智能小车的开发与设计

摘要:本文论述了基于 STC89C52 单片机的智能小车的开发与设计过程。该设计采用单片机、电机驱动及光电循迹等技术,保证小车在无人管理状态下,能按照预先设定的线路实现自动循迹功能。在电路结构设计中力求方便,可操作,…

go webapi上传文件

一、导入依赖 import "net/http" 我这里用到了Guid所以安装依赖 go get github.com/google/uuid 二、main.go package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""path/filepath&q…

七彩云南文化旅游网站设计与实现

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装七彩云南文化旅游网站软件来发挥其高效地信息处理的作用&am…

解决RabbitMQ设置x-max-length队列最大长度后不进入死信队列

解决RabbitMQ设置x-max-length队列最大长度后不进入死信队列 问题发现问题解决方法一:只监听死信队列,在死信队列里面处理业务逻辑方法二:修改预取值 问题发现 最近再学习RabbitMQ过程中,看到关于死信队列内容: 来自队…

计算机组成原理——存储系统

计算机组成原理——存储系统 存储器层次结构 存储器层次结构如下: 寄存器(CPU)Cache(高速缓冲存储器)主存磁盘磁带、光盘等 按照上述层次结构,自下而上速度依次增快、容量相对依次渐小、造价越来越高昂…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【文件系统】上

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核(LiteOS-M) 轻量系统内核&#…