简述redis数据结构

article/2025/9/13 22:53:26

String:字符串
List:列表
Hash:哈希表
Set:无序集合
Sorted Set:有序集合
bitmap:布隆过滤器
GeoHash:坐标,借助Sorted Set实现,通过zset的score进行排序就可以得到坐标附近的其他元素,通过讲score还原成坐标值就可以得到元素的原始坐标
HyperLogLog:统计不重复数据,用于大数据基数统计
Streams:内存版的kafka

常用的数据类型(主要是前五个)

1、String

String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
一个Redis中字符串value最多可以是512M。
数据结构:
在这里插入图片描述

2、List

单键多值
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
它的
底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

数据结构:
List的数据结构为快速链表quickList。
首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表。
在这里插入图片描述

3、Set

**Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,**当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。
一个算法,随着数据的增加,执行时间的长短,如果是O(1),数据增加,查找数据的时间不变。
数据结构:
在这里插入图片描述

4、Hash

Redis hash 是一个键值对集合
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map<String,Object>
用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key-value结构来存储
数据结构:
在这里插入图片描述
在这里插入图片描述

5、Sorted Set

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。
因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。
访问有序集合的中间元素也是非常快的
数据结构:
在这里插入图片描述

6、Bitmaps

合理地使用操作位能够有效地提高内存使用率和开发效率。
Redis提供了Bitmaps这个“数据类型”可以实现对位的操作:
(1) Bitmaps本身不是一种数据类型, 实际上它就是字符串(key-value) , 但是它可以对字符串的位进行操作。
(2) Bitmaps单独提供了一套命令, 所以在Redis中使用Bitmaps和使用字符串的方法不太相同。 可以把Bitmaps想象成一个以位为单位的数组, 数组的每个单元只能存储0和1, 数组的下标在Bitmaps中叫做偏移量。

7、HyperLogLog

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

8、Geospatial

Redis 3.2 中增加了对GEO类型的支持**。GEO,Geographic,地理信息的缩写**。该类型,就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作


http://chatgpt.dhexx.cn/article/46gOJyG0.shtml

相关文章

Redis数据结构之——hash

写在前面 以下内容是基于Redis 6.2.6 版本整理总结 一、Redis 数据结构hash的编码格式 Redis中hash数据类型使用了两种编码格式:ziplist(压缩列表)、hashtable(哈希表) 在redis.conf配置文件中&#xff0c;有以下两个参数&#xff0c;意思为&#xff1a;当节点数量小于512并…

Redis底层数据结构详解

Redis底层数据结构详解 我们知道Redis常用的数据结构有五种&#xff0c;String、List、Hash、Set、ZSet&#xff0c;其他的集中数据结构基本上也是用这五种实现的&#xff0c;那么&#xff0c;这五种是Redis提供给你的数据结构&#xff0c;这五种数据结构式怎么实现的&#xf…

Redis的五种基础数据结构

Redis的五种基础数据结构 Redis有5种基础数据结构&#xff0c;分别为:String(字符串)&#xff0c;list(列表)&#xff0c;hash(字典)&#xff0c;set(集合)和zset(有序集合)。 1.String(字符串) 字符串的结构 字符串String是Redis最简单的数据结构&#xff0c;它的内部表示…

Redis的数据结构

一、redis的数据结构 1、String字符串类型 Redis的String能够表示字符串、整数、浮点数三种值的类型 应用场景&#xff1a; 普通的赋值使用incr、decr命令进行递增和递减统计数据。用于实现乐观锁watch(事物)setNx实现分布式锁 底层数据类型&#xff1a; // 数据结构 stru…

为了拿捏 Redis 数据结构,我画了 40 张图(完整版)

大家好&#xff0c;我是小林。 Redis 为什么那么快&#xff1f; 除了它是内存数据库&#xff0c;使得所有的操作都在内存上进行之外&#xff0c;还有一个重要因素&#xff0c;它实现的数据结构&#xff0c;使得我们对数据进行增删查改操作时&#xff0c;Redis 能高效的处理。…

IDEA 配置Services面板

IDEA中的services窗口是一个管理所有服务的地方&#xff0c;特别是在使用spring cloud项目开发中&#xff0c;对多个微服务的管理非常实用。 配置方式一&#xff1a; 在IDEA中可通过配置将services窗口面板显示出来。 配置方式二&#xff1a; 找到项目.idea目录下worksp…

如何在IDEA配置Tomcat

1、点击RUN下拉的Edit Configurations 2、点击左上角号&#xff0c;下拉找到Tomcat Server&#xff0c;选择Local 3、 配置Tmcat信息 4、点击Deployment,选择右边的号&#xff0c;选择Artifict 5、Application context这里只写个“/”就可以了 6、点击Apply&#xff0c;然后返回…

idea配置代理服务器

1、查看代理服务器ip和端口 使用http代理 2、idea中配置代理服务器 选择File --> Settings --> 搜索HTTP Proxy --> 选择Manual proxy configuration --> 选择HTTP输入ip和端口 --> 点击Apply 3、配置jvm启动参数 -Djava.net.useSystemProxiestrue 完成!

IDEA配置安卓环境

IDEA是JetBrains公司推出的Java集成开发环境 &#xff0c;这学期又开了安卓课&#xff0c;少不了安卓环境&#xff0c;不过android stdio是完全支持安卓的&#xff0c;不适合开发java项目&#xff0c;作为小白&#xff0c;我觉得IDEA一个软件就够了&#xff0c;当然&#xff0c…

idea配置maven仓库

1、去达内开发文档服务器下载对应插件 达内开发文档服务器 找到配置文件下载 &#xff0c;下载阿里云Maven创库配置 以上下载压缩包先不动 2、创建maven项目 打开idea file-----new project 点击左侧选择maven然后next 3、然后查看对应的maven路径 点击file---setting 每个…

IDEA配置本地Maven

IDEA配置Maven: 参考视频教程:https://www.bilibili.com/video/BV1Qf4y1T7Hx?p45 总体流程预览: 创建一个空的项目IDEA配置Maven环境Maven 坐标详解IDEA创建Maven项目IDEA导入Maven项目maven Helper插件依赖管理 1.创建一个空的项目 File—>New—>Project—>Empt…

idea配置tomcat

1.添加tomcat。 2.点击Edit Configurations后打开如下界面。| 3.点击加号 4.在这里配置tomcat信息&#xff0c; 5.填写好基本tomcat信息后&#xff0c;点击ok。我们就配置好了Tomcat&#xff0c;此时我们会看到。项目中显示了我们刚才配置的的Tomcat。 但是直接运行的话…

idea配置docker

IDEA作为开发电脑&#xff0c;要远程连接到另一台Linux电脑上部署的Docker服务&#xff0c;我们登陆到机器上&#xff0c;进行docker远程访问配置&#xff1a; IDEAdocker实践 - 邹姣姣 - 博客园 idea里 选择Plugins&#xff0c;插件 已经安装了docker插件 连接远程Docker服…

idea配置maven

idea配置maven 下载配置maven(如果有请跳过)打开idea开始配置maven附录&#xff1a; 下载配置maven(如果有请跳过) 首先你先得安装配置你本机maven的环境&#xff0c;官方下载maven&#xff0c;附带下载maven&#xff1a; 下载maven链接 我选择的时3.6.3-bin.zip&#xff0c…

Idea配置Tomcat服务器

一、新建项目 首先新建一个Java项目 此时只是新建了一个Java项目&#xff0c;还不能用于写JavaWeb程序&#xff0c;所以接下来需要添加Web框架&#xff0c;并 配置Tomact服务器 右键点击项目Demo1&#xff0c;选择【添加框架支持】&#xff0c;然后再左侧中选择【Web应用程序…

idea配置ant版本_idea配置ant项目

之前一直用的maven管理&#xff0c;所以编译 打包都交给了maven&#xff0c;但是最近接触了新的项目&#xff0c;不是用maven管理的&#xff0c;是ant去【管理】的(这么说不严谨)&#xff0c;在用idea去本地启动tomcat的时候周折了一番&#xff0c;特记录。 1、找build.xml 里面…

IDEA配置jetty

&#x1f68c;一个人可以走的很快&#xff0c;一群人可以走的很远&#x1f4dd; &#x1f389;点赞➕评论➕收藏 ➕关注 养成习惯&#xff08;一键四连&#xff09;&#x1f4dd; &#x1f389;欢迎关注&#x1f497;一起学习&#x1f44d;一起讨论⭐️一起进步&#x1f4dd; &…

IDEA 配置热部署

IDEA 配置热部署 引言步骤1步骤2步骤3IDEA 旧版本IDEA 新版本 热部署的缺点总结 引言 平时如果我们修改了自己项目的代码后&#xff0c;都要重新运行启动类&#xff0c;才能使新的项目生效&#xff0c;配置了热部署后&#xff0c;我们就可以让 IDEA 自动帮我们重启项目了。 I…

IDEA配置TestNG

1.IDEA安装TestNG 若IDEA已经安装TestNG的插件&#xff0c;显示如下 若没有&#xff0c;则搜索TestNG&#xff0c;进行下载 2.创建单元测试方法 1.打开需要进行单元测试的方法&#xff0c;选择类名&#xff0c;点击AltEnter键&#xff0c;选择Create Test 第一次创建单元测…

Idea配置SVN

idea配置SVN 1. 配置svn.exe路径 2. 启用版本控制 VCS–enable version control integration 3. 设置Version Control Settings–Version Control 4. 在工程上右键可以看到 此时项目已经变更颜色了. 5. 提交maven工程到svn仓库 首先工程右键—subversion–share Directory…