小小Redis数据类型,拿捏

news/2024/9/28 5:27:07

面试遇到过的Redis问题

  • Redis的数据类型

  • 怎么利用Redis解决超卖问题

1. 什么是Redis

Redis就是一个非关系型数据库(NoSQL),我们知道关系型数据库MySQL,在MySQL里我们对于数据的增删改查需要SQL语句(select * from...),麻不麻烦——麻烦,慢不慢——当然是慢的,因为数据是存在硬盘上的,存在硬盘上的数据明显特点就是重启电脑数据还在,但是我们要对数据进行处理的时候就需要将数据拿到内存里

所以聪明的人类想到,既然操作存储在硬盘里的数据很慢,那如果我们将数据存在内存里,操作起来不就快了吗

所以NoSQL就出现了,而Redis就是常见的NoSQL

2. Redis概念

Redis (Remote Dictionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。

3. Redis特征

(1)数据间没有必然的关联关系;

(2)内部采用单线程机制进行工作;

(3)高性能。

官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。

(4)多数据类型支持

字符串类型:string list

列表类型:hash set

散列类型:zset/sorted_set

集合类型

有序集合类型

(5)支持持久化,可以进行数据灾难恢复

4. Redis常见的数据类型

string 、 hash 、 list 、 set 、 sorted_set/zset

1. String

(1)存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。

string,他就是存一个字符串儿,注意是value那一部分是一个字符串,它是redis中最基本、最简单的存储数据的格式。

(2)存储数据的格式:一个存储空间保存一个数据

每一个空间中只能保存一个字符串信息,这个信息里边如果是存的纯数字,他也能当数字使用。

(3)存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用

2.hash

(1)新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息

(2)需要的存储结构:一个存储空间保存多个键值对数据

(3)hash类型:底层使用哈希表结构实现数据存储

(4)hash存储和String类型存储的区别就是,string在value部分只能存储一种数据,如果一个数据有多条信息呢,比如一个学生信息,如果利用string存储就要存好多条,但是hash可以将name、age等装在一起,如下图

3. list

可重复

(1)数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分

(2)需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序

(3)list类型:保存多个数据,底层使用双向链表存储结构实现

4. set

不可重复

(1)新的存储需求:存储大量的数据,在查询方面提供更高的效率

(2)需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询

(3)set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的

5. sorted_set/zset

Redis的SortedSet是一个可排序的set集合,每部的每个元素都带有一个score属性,可以基于score属性对元素进行排序。底层的实现是一个跳表(SkipList)加hash表

Sorted具有下列特征

  • 可排序
  • 元素不重复
  • 查询速度快

所以经常被用来实现排行榜等功能


这篇只介绍了数据类型,下篇介绍Redis的持久化,不急慢慢来ovo

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

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

相关文章

一种利用光电容积描记(PPG)信号和深度学习模型对高血压分类的新方法

具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 据世界心脏联合会统计,截至 2022 年,全球有 13 亿人被诊断患有高血压,每年约有 1000 万人死于高血压。一个人有必要拥有有益于心脏健康的生活方式,以防止被诊断出患有心血管疾病(CVD)和动脉疾病等致命疾病…

BMP图片内部结构

BMP图片内部结构 ​ BMP文件的数据按照从文件头开始的先后顺序分为四个部分:分别是位图文件头、位图信息头、调色板(24bit位图是没有的)、位图数据(RGB)。 (1)位图文件头(Bitmap-File Header)包含了图像类型、图像大小、两个保留字以及位图数据存放地址。(2)位图信息…

使用 Redisson 框架基于 Redis 实现分布式锁

分布式锁可以采用数据库、zookeeper、redis 三种方式实现。 采用数据库实现方式,主要采用表字段的唯一索引特性。数据库是非常昂贵的资源,非常不推荐,最致命就是性能,不要去增加不必要的负担。 采用 zookeeper 的实现方式,主要使用其为客户端创建临时有序节点的特性,在我…

笛卡尔树学习笔记

笛卡尔树 引入 是一种二叉树,每个节点由一个二元组 \((k,w)\) 形成。\(k\) 满足二叉搜索树的性质,\(w\) 满足堆的性质。上面这棵笛卡尔树相当于把数组元素值当作键值 \(w\),而把数组下标当作键值 \(k\)。显然可以发现,这棵树的键值 \(k\) 满足二叉搜索树的性质,而键值 \(w…

ImDisk高级指南:打造你的专属虚拟磁盘空间

ImDisk使用详解和高级用法一、ImDisk使用详解创建虚拟磁盘:使用命令行参数创建虚拟磁盘。例如,imdisk -a -s 10m -m B: 命令将创建一个大小为10MB的虚拟磁盘,并将其分配给B盘符。 你可以使用 -s 参数指定虚拟磁盘的大小,支持的单位包括b、k、m、g、t等,或者使用%表示可用内…

STM CubeMx不能生成代码的解决方法

在使用STM CubeMx时,遇到不能生成代码的问题,即点击“GENERATE CODE”后,软件没有任何反应。 从网上找到若干解决方案,大概是: 以下是可能的解决方法: 1. 确保你已经安装了正确版本的Keil和STM32CubeMX,并且它们都能正常运行。 2. 在STM32CubeMX中点击生成代码按钮之前,…

利用系统IO读取磁盘上指定BMP图片的宽和高以及大小

文件IO代码 /*************************************************************************************** file name: 1.c* author : lu.ciana.598393@gmail.com* date : 2024/05/11* function : 利用系统IO读取磁盘上指定BMP图片的宽和高以及大小* note : n…

雨天的尾巴

[Vani有约会] 雨天的尾巴 /【模板】线段树合并 题目背景 深绘里一直很讨厌雨天。 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切。 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连根拔起,以及田地里的粮食被弄得一…