一文详解Redis面试中常见的5种数据结构及对应使用场景

Redis的五大数据类型及其使用场景 字符串类型:实际上可以是字符串(包括XML、JSON)、还有数字(整形、浮点数)、二进制(图片、音频、视频),最大不能超过512MB。 阅读详情

本文转载自:一文详解Redis面试中常见的5种数据结构及对应使用场景


写在前边

也当过面试官,面试过不少应聘者,因为是我自己招人自己用,所以我不会看应聘者造火箭的技术有多牛比,只看拧螺丝的手艺瓷不瓷实。毕竟以后是一个整体,拖了大家后腿团队都很难受。面试的题目一般也不会太难,就像问Redis,我只是想确认他真正用过就够了。Redis 5种基础数据结构和简单操作要知道,最基本的要求,如果这个时候他会说出每种数据结构大致的应用场景,那么这一定是加分的,起码要比那些只会说出几种数据结构后,在那干瞪眼等我问下一个问题的强很多,千万别冷场。

Redis基础数据结构有哪些?

一、String(字符串)

在任何一种编程语言里,字符串String都是最基础的数据结构, 那你有想过Redis中存储一个字符串都进行了哪些操作嘛?

RedisString是可以修改的,称为动态字符串(Simple Dynamic String 简称 SDS)(快拿小本本记名词,要考的),说是字符串但它的内部结构更像是一个 ArrayList,内部维护着一个字节数组,并且在其内部预分配了一定的空间,以减少内存的频繁分配。

Redis的内存分配机制是这样:

  • 当字符串的长度小于 1MB时,每次扩容都是加倍现有的空间。
  • 如果字符串长度超过 1MB时,每次扩容时只会扩展 1MB 的空间。

这样既保证了内存空间够用,还不至于造成内存的浪费,字符串最大长度为 512MB.

上图就是字符串的基本结构,其中 content 里面保存的是字符串内容,0x\0作为结束字符不会被计算len中。

分析一下字符串的数据结构

struct SDS{
  T capacity;       //数组容量
  T len;            //实际长度
  byte flages;  //标志位,低三位表示类型
  byte[] content;   //数组内容
}

capacitylen两个属性都是泛型,为什么不直接用int类型?因为Redis内部有很多优化方案,为更合理的使用内存,不同长度的字符串采用不同的数据类型表示,且在创建字符串的时候 len 会和 capacity 一样大,不产生冗余的空间,所以

Redis 详解与应用场景指南 Redis是一个高性能的内存键值数据库,支持丰富的数据结构,包括字符串、哈希、列表等。其核心优势在于内存操作、单线程模型及高效数据结构,读写速度可达每秒10万+次。Redis提供RDBAOF两种持久化方式,并支持发布订阅、Lua脚本等高级功能。典型应用场景包括缓存系统、会话存储、分布式锁消息队列等。使用建议包括合理设置过期时间、避免大Key、使用Pipeline优化性能。面试常见问题涉及Redis的高效原理、持久化选择集群方案等。 阅读详情

相关推荐

面试Redis

面试篇之Redis总结

yiyiyu66的博客 1681

谈谈面试题Redis数据结构使用场景

Redis数据结构5种: 1.字符串:可以用来做最简单的数据缓存,可以缓存某个简单的字符串,也可以缓存某个json格式的字符串。Redis分布式锁的实现就利用了这种数据结构,还包括可以实现计数器,Session共享,分布式ID 2. ...

阿武刚巴得 254

网格自适应实战 | 攻克超弹性体大变形不收敛难题

本文针对超弹性体(如橡胶)在大变形仿真中因网格严重扭曲导致计算不收敛的难题,提供了基于ANSYS网格自适应技术的实战解决方案。文章详细阐述了从问题诊断、模型准备到核心参数设置的完整流程,并介绍了结合混合U-P单元技术的进阶组合策略,有效攻克了材料压缩等场景下的仿真收敛问题。

week9的博客 485

Redis的五种数据类型及应用场景

1,数据类型 String(字符串,整数,浮点数):做简单的键值对缓存 List(列表):储存一些列表类型的数据结构 Set(无序集合):交集,并集,差集的操作 Hash(包含键值对的无序散列表):结构化的数据 Zset(有序集合)(Sorted sets):去重同时也可以排序, 1,String ​ String是redis最基本的数据类型,一个key对应一个value。redis的String可以表示任何数据。比如jpg图像或者序列化对象,String的最大储存值未512MB。

陆卿之的博客 2万+

Redis五种数据结构应用场景

Redis作为缓存数据库,目前在市场上占有很大的使用率,大部分人在工作中都使用到其string格式的存储,对于剩下的数据结构却很少使用到,Redis 基本数据结构包含:字符串(string)、 散列(hash)、 列表(list)、 集合(set)、 有序集合(sorted set)五种。LREM key count element //根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素 count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT。

竹林幽深 1429

Redis 5数据结构的用法&场景

Redis 提供了五种基本数据类型:String、Hash、List、Set、Sorted Set。以下是每种类型的定义、使用场景常用命令。

Mylqs的博客 2941

redis获取byte数组_一文详解Redis面试常见5数据结构对应使用场景

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿关注# 链接 Java程序员福利"常用资料分享"写在前边也当过面试官,面试过不少应聘者,因为是我自己招人自己用,所以我不会看应聘者造火箭的技术有多牛比,只看拧螺丝的手艺瓷不...

weixin_31874603的博客 581

redis hash删除所有key_一文详解Redis面试常见5数据结构对应使用场景

写在前边也当过面试官,面试过不少应聘者,因为是我自己招人自己用,所以我不会看应聘者造火箭的技术有多牛比,只看拧螺丝的手艺瓷不瓷实。毕竟以后是一个整体,拖了大家后腿团队都很难受。面试的题目一般也不会太难,就像问Redis,我只是想确认他真正用过就够了。Redis 5种基础数据结构简单操作要知道,最基本的要求,如果这个时候他会说出每种数据结构大致的应用场景,那么这一定是加分的,起码要比那些只会说出几...

weixin_39918682的博客 281

一口气说出Redis 5数据结构对应使用场景面试要加分的

一、String(字待串) 字符串 tring Redis 最简单的数据结构,它的内部表示就是一 个字符数组。Redis 的字符串是动态字符串,是可以修改的字符串,内部结构的实现类似于 Java ArrayList ,采用预分配冗余空间的方式来减少内存的频繁分配,内部为当前字符串分配的实际空间 capacity 般要高于实际字符串长度 len 。当字符 串长度小于 1MB 肘,扩r容都是加倍现有的...

程序员内点事 2263

一文带你掌握Redis常见面试题

16384 是一个工程折中。槽太少,分片不够细;槽太多,集群节点之间需要交换的槽位状态信息会变大。Redis Cluster 节点之间通过 gossip 协议传播集群信息,每个节点都要维护槽位分配状态。16384 个槽既能满足绝大多数分片需求,也能控制元数据开销。基础概念:理解 Redis 为什么快、适合做什么。数据结构:掌握 String、Hash、List、Set、ZSet 及特殊结构的场景。缓存问题:穿透、击穿、雪崩、大 key、热 key 是必问。

huaiixinsi的博客 2806

Redis 5数据结构对应使用场景

也当过面试官,面试过不少应聘者,因为是我自己招人自己用,所以我不会看应聘者造火箭的技术有多牛比,只看拧螺丝的手艺瓷不瓷实。毕竟以后是一个整体,拖了大家后腿团队都很难受。面试的题目一般也不会太难,就像问Redis,我只是想确认他真正用过就够了。Redis5种基础数据结构简单操作要知道,最基本的要求,如果这个时候他会说出每种数据结构大致的应用场景,那么这一定是加分的,起码要比那些只会说出几种数据结构后,在那干瞪眼等我问下一个问题的强很多,千万别冷场。...

uuqaz的博客 310

Redis常见5数据结构对应使用场景

https://zhuanlan.zhihu.com/p/107486464

x²+(y-√³x²)²=1的博客 268

Redis常见面试题

从集合里面随机获取元素交集、并集、差集的操作,比如交集,可以把两个人的粉丝列表整一,或者是用户的喜好标签等。key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮,也就是一个key过期,一直访问数据库。一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。

2403_87486006的博客 1997

redis面试篇--使用场景

假设:线程1 查询缓存 --- 未命中 --- 线程1 查询数据库,得到数据 10 --- 线程2 更新数据库数据为20 ---- 线程2 删除缓存 --- 线程1 回设缓存为10。线程1 删除缓存 --- 线程1 修改数据库数据为10 --- 线程2 查询缓存 --- 未命中 ---线程2查询数据库,查到 数据10 --- 缓存重建,回设缓存数据为10。线程2 加锁 --- 线程2 读缓存,未命中 --- 线程2 读数据库 --- 线程2 更新缓存 --- 线程2 解锁。

weixin_56829823的博客 959

面试redis篇】redis面试

但是,并不是所有的最新列表都能用st类型实现,因为对于频繁更新的列表,list类型的分页可能导致列表元索重复或漏掉,举个例子,出前列表里由表头到表尾依次有(E,D,C,B,A)五个元素,每页获取3个元素,用户第一次获取到(ED,C)三个元素,然后表头新增了一个元素F,列表变成了(F,E,D,C,B,A),此时用户取第二页拿到(CB、A),元素C重复了。对于锁的类型,如果是在单机环境下可以使用 Java 并发包下的 Lock,如果是在分布式环境下,可以使用分布式锁(Redis 中的 SETNX 方法)。

xiaobaixuedaima的博客 1411

一、Redis入门-Redis五大数据结构及应用场景

在学习redis五大数据结构之前我们首先要知道这些数据结构适合在什么场景使用,才不会学习起来那么空洞,String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类常用使用场景:1、缓存结构体信息2、计数功能Hash对象的键是一个字符串类型,值是一个键值对集合。应用场景:该类型非常适合于存储对象的信息(结构体信息)。如一个用户有姓名,密码,年龄等信息。可以向Redis列表的头部或尾部添加元素。

qq_67197136的博客 608

Redis 的五种数据类型以及使用场景

Redis的setnx命令可以在key不存在时设置key的值,因此可以基于此实现分布式锁。一个进程在执行加锁操作时,先尝试使用setnx占据锁的key,如果返回值为1,表示获得了锁;Redis提供了消息队列功能,可以作为轻量级的消息中间件使用,支持多个生产者消费者。Redis 可以将常用的数据存储在内存中,并且设置过期时间来实现缓存的功能。当应用需要这些数据时,可以直接从 Redis 中获取,避免了从磁盘读取数据的IO操作,从而提高了系统的响应时间吞吐量。

BXA 4246

redis 五种数据类型、命令使用方法及使用场景

redis 五种数据类型、命令使用方法及使用场景

Lai助网络科技的博客 990

107.在 Vue 3 中使用 OpenLayers 实现视图联动功能

是一个非常强大的 Web 地图渲染库,支持多种地图数据格式交互操作。在 Vue 3 中,我们可以利用。绑定到真实的 DOM 元素上,我们就可以用它们来初始化 OpenLayers 地图。来封装管理 OpenLayers 地图的状态,从而更高效地开发地图应用。,即两个地图窗口共享同一个视图(View),从而实现同步缩放、拖动等操作。这可以确保 Vue 组件销毁时,OpenLayers 也正确销毁地图实例。,并且它们会同步缩放拖动,达到地图联动的效果。这样,无论你拖动哪个地图,另一个都会同步变化。

小彭的博客 1909

自考高级英语上(下册)中英翻译.doc

自考高级英语上(下册)中英翻译.doc

上一篇: 一文深入理解Dubbo核心模型Invoker
下一篇: 这可能是把JDK监控和故障处理工具总结的最完整的一篇文章了
Java_supermanNO1
博客等级 码龄7年 1169粉丝 331原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值