redis字典快速映射+hash釜底抽薪+渐进式rehash | redis为啥那么快

redis中hash数据结构 目录hash的数据结构ziplist底层实现字典底层实现扩容缩容引用 hash的数据结构 hash底层数据结构的实现包括两种:ziplist和字典 当保存的所有键值对字符串长度小于 64 字节并且键值对数量小于 512 时使用ziplist ,否则使用字典的方式 ziplist底层实现 字典 底层实现 字典(dict):其中包含长度为2的哈希表数组dictht,rehashIdx(默认-1)如果为-1说明当前没有扩容,如果不为 -1 则表示正在进行扩容,记录了原hash表需rehash的数组下标 h 阅读详情

前言

  • 相信你一定使用过新华字典吧!小时候不会读的字都是通过字典去查找的。在Redis中也存在相同功能叫做字典又称为符号表!是一种保存键值对的抽象数据结构
  • 本篇仍然定位在【redis前传】系列中,因为本篇仍然是在解析redis数据结构!当你尝试去了解redis时才能明白其中原理!才能明白为什么redis被大家吹捧速度快,而不是被告知redis很快!

应用场景

  • 在Redis中有很多场景都是用了字典作为底层数据结构!我们使用最多的应该是redis的库的设置和五种基本数据类型的Hash结构数据!
  • 在上一篇【redis前传】中我们学习了list数据结构。今天我们继续学习主流数据结构Hash。
  • 在redis内部有字典结构、hash结构但是这里的hash和我们平时熟知的redis基础数据的hash并不是一个意思!我们简单的将字典结构、hash结构理解成redis更加底层的一种抽象结构。平时我们使用的hash基础数据结构理解成hash工具

  • 而今天我们的主角就是五种数据结构的Hash分析。他的底层使用了字典这个结构。字典结构内部使用的是底层的hash结构。有点绕!好好理解你行的

哈希表

  • 上面这张图诠释了作为redis底层结构的Hash。在内部redis称之为dictht 。 后面我们为什么和之前的hash结构冲突我们都已类名为准叫做dictht类。
  • 在hictht类中有四个属性分别是table 、 size 、 sizemask 、 used ; 其中table就是一个数组;数组中元素是另外一个类叫做dictEntry类。
  • dictEntry就是真正存储数据的。内部是key、value存储结构。一个简单的哈希表就如图所示。数据最终会存储在table中的dictEntry对象中。
  • 至于为什么sizemask = size -1 ; 这个是为了在计算hash索引时需要用到的。那为什么不直接使用size-1而是通过一个变量来承接呢?这个吧!!!我也不知道。容我去百度百度。

数组节点

  • 上面的哈希表是不是很熟悉,这不和我们Java中的Map数据结构如出一辙吗。可以说是也可以说不是,两者很相似但也有区别的。
  • 在上面中我们提到数据最终是存储在哈希表里table数组里的元素。该元素叫dictEntry 。 下面我们看看dictEntry结构如何吧!

  • 通过左侧对dictEntry的定义我们可以看出。dictEntry存储的值可以是指针、正数、浮点数各种数据类型!类似于Java中的Object属性。 对于上述的key没有啥真意的就是一个键。
  • 既然是数组那么索引就是固定长度的,那么在有限的长度中肯定会出现经典问题就是【hash冲突】。在Java中我们是通过链表和红黑树来解决冲突的问题!在redis中是通过链表解决的。在dictEntry中通过next指针将冲突元素连接。
  • 这里我们就可以和Java中的Map结构进行理解。他们内部很是相似!!!
  • 这里需要注意下在hash冲突时redis的确是通过链表进行存储的,但是由于哈希表(dictht)中没有记录每个索引未中链表的尾部节点只有头结点信息所以。而且我们也知道链表在查询上效率不佳,所以当发生哈希冲突时redis是将新加入的节点加入在链表的头部!

字典

多态字典

  • 字典是本文开头提出的结构!也是redis中大量使用的一种底层数据结构。在redis中名叫做dict类。

  • 通过图示我们明确地看出内部是包含哈希表的。其实从名字上我们也可以看出哈希表为什么叫dictht 。 笔者这里认为是dicthashcodetable 。 意思就是字典表内部的一个hash相关的数组(仅个人理解)
  • 之前也提到过redis内部很多地方会使用到字典!就好比我们上学时用到【新华字典】、【成语词典】、【歇后语词典】等等。虽然名字叫法不一样但是内部结构都是一部字典供我们快速定位。而redis中dict内部就是通过type字段进行区分每个字典的。而privdata是每部字典需要的特定参数。通过type和privdata就可以轻松实现各种功能不同的字典,他有个专有名词叫多态字典

rehash

  • 除了type 、 privdata以外剩下的就是ht 、 rehashidx了。其中ht是一个长度为2的数组。数组里元素就是我们之前提到的哈希表(dictht) 。 ht为什么长度为2 这就需要我们了解下redis的rehash过程了。而rehashidx就是记录rehash的进度!在没有发生rehash的时候rehashidx=-1;
  • 在实际使用过程中在字典中我们所有的数据都会存储在ht[0]对应的哈希表中。ht[1]永远都是一个空数组。这些都是为什么rehash做准备,在正式开始之前我们先来了解下redis为什么需要rehash这个动作
  • 首先我们在哈希表中是一个定长数组发生冲突时内部是通过链表解决的。理论上一个哈希表可以存储足够的数据,这里的足够就是指空间允许的范围有多少存多少。但是我们知道链表的特点就是新增、删除很快但是查询很慢,尤其是当链表很长的时候就会出现查询效率低下的问题!为了避免链表过长redis就会在一定条件下对哈希表中数组长度的扩展从而解决局部链表过长的问题!
  • 每次数组发生长度变化时,那么之前的hash值就需要重新经历一遍hash然后寻址index的过程。这个过程就叫做rehash 。

  • 关于rehash和Java中Map的resize是一样的功能!Java中resize是直接new 出一片内存进行复制的而且他是每次进行2倍扩展。而redis的rehash稍微不同基本上我们也可以理解成2倍扩展!关于两块内存复制有点类似于JVM中垃圾回收有点类似。有时间我们可以一起研究下JVM章节。
  • 那么啥时候需要进行rehash呢?这里和Java的负载因子一样;但是除了负载因子这个空间考核以外redis还考虑一个性能的问题。因为在单线程的前提下我们还要考虑客户端使用的感知性!单线程的意思就是执行命令是顺序执行的。总不能在我们rehash的过程中全部阻塞客户端的使用这对于操作体验上稳定性来说是不友好的。

  • 涉及到上述两个命令的我们称之为后台命令结合负载因子产生如下条件

渐进式rehash

  • 一直强调redis是单线程。那么什么叫单线程模型?就是对于redis服务来说执行命令是线性操作!但是每个客户端的命令是无序的,先到的就先进入队列redis服务从队列一次取出命令进行执行。除了客户端的命令还有一些系统生成的命令比如说我们上面提到的rehash操作!
  • ①、首先为了避免阻塞客户端或者说尽量控制阻塞的时间在客户端感知范围内,redis内部的rehash并不是一次性操作而是一个循序渐进的过程。一次仅复制一部分
  • ②、还记得之前我们提到dict中rehashidx这个属性吗,它是记录rehash的进度。因为哈希表内部是一个数组而rehashidx就是记录这个数组的索引。从而我们也可以知道每次rehash复制的时候是以一个索引完整链表为单元进行复制的。
  • ③、除了新增以外的其他操作都会同时影响到ht[0]、ht[1] 因为在rehash过程中两个数组都是在使用状态的
  • ④、新增值的时候就只需要新增到ht[1]中。因为最终的目的就是将所有值同步到ht[1]中。而ht[0]的值会慢慢地变少;没必要新增到ht[0]
  • ⑤、在rehash过程中查找元素时会查找两个数组中的并集元素。这也就也是了为什么在rehash过程新增元素只需要新增到ht[1]的原因

总结

①、字典表在redis被广泛使用,基于字典表优秀的设计解决redis单线程问题

②、字典里包含哈希表,哈希表内部使用节点负责存储key、value

③、字典type实现多态字典用于多场景!

④、渐进式rehash解决服务卡顿问题

Redis 字典的哈希函数和 rehash 操作详解 总之,Redis 字典的哈希函数和 rehash 操作是保证字典高效存储和快速查找的重要机制。哈希函数用于将键映射到哈希表中的位置,而 rehash 操作则用于动态调整哈希表的大小,以适应不同数量的键值对存储需求。在 Redis 中,字典(Hash Table)是一种重要的数据结构,用于存储键值对。下面解释 Redis 字典的哈希函数和 rehash 操作。 阅读详情

相关推荐

深入理解Redis中的渐进式Rehash技术

渐进式Rehash技术能够有效地降低Rehash操作对系统性能的影响,使系统在扩容过程中能够保持稳定性和高性能,从而提升了系统的可用性和稳定性。渐进式Rehash将Rehash操作分解成多个小步骤,可以减少数据迁移过程中可能出现的数据不一致问题,保证了数据的一致性。在Redis集群中,渐进式Rehash技术能够帮助实现节点的动态扩容和数据的重新分片,从而促进了Redis集群的健康发展和高可用性。

fudaihb的博客 2491

Redis之渐进式rehash

渐进式rehash

weixin_42189550的博客 4221

Redis底层探秘:哈希算法在NoSQL数据库中的核心应用

本文旨在揭示Redis如何通过哈希算法实现其高效的数据存储和检索功能。我们将重点分析Redis的字典数据结构实现,探讨哈希算法在其中的核心应用。介绍哈希算法的基本概念分析Redis字典的实现原理深入探讨哈希冲突解决策略解析渐进式rehash机制通过实际案例展示应用场景哈希表:通过哈希函数将键映射到表中位置的数组结构哈希冲突:不同键映射到相同哈希值的情况负载因子:哈希表中已存储元素数量与表大小的比值// 哈希表节点void *key;// 键union {void *val;

AI 算法实战派 1191

单线程照样飞起 | redis字典快速映射+hash釜底抽薪+渐进式rehash

前言 相信你一定使用过新华字典吧!小时候不会读的字都是通过字典去查找的。在Redis中也存在相同功能叫做字典又称为符号表!是一种保存键值对的抽象数据结构 本篇仍然定位在【redis前传】系列中,因为本篇仍然是在解析redis数据结构!当你尝试去了解redis时才能明白其中原理!才能明白为什么redis被大家吹捧速度快,而不是被告知redis很快! 应用场景 在Redis中有很多场景都是用了字典作为底层数据结构!我们使用最多的应该是redis的库的设置和五种基本数据类型的Hash结构数据! 在上

烟花散尽的专栏 559

Redis Rehash机制的探索和实践(京东Redis 集群)

背景 京东内部Redis 集群平台是京东技术团队基于Redis Cluster打造的缓存系统。经过不断的迭代研发,目前已形成一整套自动化运维体系:涵盖一键运维集群、细粒度的监控、支持自动扩缩容以及热点Key监控等完整的解决方案。同时服务端通过Docker进行部署,最大程度的提高运维的灵活性。分布式缓存Redis 缓存产品自2014年上线至今,已在京东内部广泛使用,存储容量超过80T,日均调用量也...

几十年资深高级架构师,技术专家的技术笔记。专注C、Java、Python、微服务、云原生、AI工程化及高并发系统分布式架构实战,分享源码剖析、性能调优与架构治理经验。 1082

视觉惯性SLAM系列——ORB-SLAM3的整体介绍及各个线程的功能(五)

跟踪线程(Tracking Thread)作用:负责处理每一帧图像,进行相机位姿的估计和定位。它首先执行与前一帧图像的特征匹配,然后通过仅运动(motion-only)BA(Bundle Adjustment)优化位姿。如果跟踪失败,它会尝试在所有地图中进行重定位。此外,跟踪线程还负责决定何时插入新的关键帧,以及何时将关键帧从局部地图中移除。详细介绍见局部建图线程(Local Mapping Thread)作用:管理局部地图,向活跃地图添加关键帧和点,移除多余的关键帧和点。

曾经也曾立志 1004

Redis的渐进式Rehash

为了实现从键到值的快速访问,Redis 使用了一个哈希表来保存所有键值对。 一个哈希表,其实是一个数组,数组的每个元素称为一个哈希桶。 哈希桶中的 entry 元素中保存了 *key 和 *value 指针 哈希表存在哈希冲突问题和 rehash 可能带来的操作阻塞 Redis 解决哈希冲突的方式,就是链式哈希。就是指同一个哈希桶中的多个元素用一个链表来保存,它们之间依次用指针连接(叫做哈希冲突链)。 Redis 的 rehash 哈希冲突链上的元素只能通过指针逐一查找再操作。如果哈希表里写入的数据越来

weixin_44213038的博客 2214

[Ethernet in CANoe]3--CANoe工程中SOME/IP报文的详细介绍(一)

和上述第一章节的介绍,我们对SOEMIP通信协议有了初步了解,首先我们先暂停Trace窗口,可以看到整个Trace窗口关于SOMEIP的报文有两种颜色,一种是紫色,另一种是绿色。它使用多播地址,允许服务提供者发布其服务,服务消费者订阅这些服务。上述每点开一个SOMEIP报文,左侧的details就能看到该报文中的具体细节,从IP地址到port口,再到具体的serviceID,都能详细的解析。一旦通过服务发现完成了服务的发布和订阅,服务消费者就可以向服务提供者发送请求,或者服务提供者向消费者发送事件通知。

汽车ECU自动化测试 1412

【Redis】什么是渐进式rehash

字典 字典是一种用于保存键值对的抽象数据结构。比如set msg "hello redis"这个键值对就是保存在数据库字典中 字典还是哈希键的底层实现之一,当一个哈希键包含的键值对比较多,又或者键值对中的元素都是比较长的字符串时,redis就会使用字典作为哈希键的底层实现。 redis中的字典使用哈希表作为底层实现,一个哈希表中可以有若干个哈希表节点 字典结构定义 typedef st...

真正的大师,永远怀着一颗学徒的❤ 4254

c语言播放背景音乐

相信很多童鞋都在为大学课设而伤透头脑,而背景音乐的使用无疑会成为其中的一个亮点(总比没有好吧(╯▽╰)),故接下来我将介绍一下如何用C播放音乐。我用的编译器是CodeBlocks16.01接下来新建一个C文件建立完后是这样滴然后添加其中mciSendString()函数是由<mmsystem.h>库提供的供播放音乐(MP3)的函数第一个参数是歌曲所在的绝对路径 打开音乐所在位置 复制这...

qq_41443987的博客 3万+

nrf52840的uart0与uart1双串口使用

nrf52840的uart0与uart1双串口使用 项目原使用nrf52832,后面由于项目需要用到双串口,改用nrf52840,官方的例程没看到使用uart1的,找遍全网都没找到uart1的使用资料,有些不负责任的网文居然说40也只有一个uart,吓得俺赶紧又查看了一次datesheet,O得K、木鸭梨 SDK代码uart驱动中,搜索到uart1的驱动部分,说明官方驱动有uart1支持的 自己动手,丰衣足食吧,下面以nRF5_SDK_17.0.0_9d13099版本,在examples\ble_per

chhen168的博客 5627

Redis渐进式rehash小疑问

在Redis中,Rehash是指在进行哈希表扩容或缩容时重新计算和重新分配哈希槽的过程。Redis使用哈希表来存储键值对,哈希表中的每个槽位对应一个哈希槽,每个槽位可以存储多个键值对。当哈希表的负载因子(load factor)超过一定阈值时,Redis会触发Rehash操作来扩容哈希表,以提供更多的槽位来存储新的键值对。在Rehash过程中,Redis会逐步将原来哈希表中的键值对迁移到新的哈希表中,直到所有键值对都迁移完成。

weixin_42189550的博客 1279

【51单片机仿真】基于51单片机设计的多功能电子时钟日历(实时时钟闹钟秒表温度检测)系统__资料编号5

该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。

嵌入式阿齐Archie 2万+

哈希字典Dict

在进行 rehash 期间,每次对字典执行 增、删、改、查操作时,程序除了执行指定的操作外,还会将 哈希表 ht[0].table中下标为 rehashidx 位置上的所有的键值对 全部迁移到 ht[1].table 上,完成后 rehashidx 自增。其实没有想象中的那么复杂,随着字典操作的不断执行,哈希表保存的键值对会不断增多(或者减少),为了让哈希表的负载因子维持在一个合理的范围之内,当哈希表保存的键值对数量太多或者太少时,需要对哈希表大小进行扩展或者收缩。,数组的每个元素称为一个哈希桶。

m0_57408211的博客 1109

移植Google Gemini Nano到RK3588 NPU,实现高效边缘推理

在嵌入式 AI 开发中,大家常常会遇到模型在硬件平台上运行时出现性能瓶颈的问题,比如推理速度慢、功耗过高,这严重影响了应用的实时性和稳定性 ,导致性能瓶颈,无法满足如智能安防、工业检测等场景的实时性需求。为了解决这些问题,我们可以将轻量模型移植到具有强大算力的硬件平台上。本文将手把手教你将 Google Gemini Nano(或类似轻量模型)移植到 RK3588 NPU,充分发挥 RK3588 NPU 的 6Tops 算力,实现高效的模型推理,提升嵌入式系统的 AI 处理能力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 297

AI大模型入门到实战系列(二十一)命名实体识别(NER)

命名实体识别(NER)是自然语言处理中的关键任务,旨在从文本中识别并分类预定义类别的实体(如人名、地点、组织等)。其核心步骤包括文本预处理、实体边界检测和类型分类。主流技术方法经历了从基于规则、统计机器学习到深度学习的演进,当前主要采用预训练语言模型(如BERT)和序列标注技术(如BiLSTM-CRF)。关键技术挑战包括实体边界模糊、嵌套实体和领域适应等问题。NER广泛应用于信息抽取、搜索引擎优化和知识图谱构建等领域,常用精确率、召回率和F1值作为评估指标。实际应用中通常采用BIO标注体系,并通过标签对齐处

echo的博客 1625

【redis前传】redis字典快速映射+hash釜底抽薪

前言 相信你一定使用过新华字典吧!小时候不会读的字都是通过字典去查找的。在Redis中也存在相同功能叫做字典又称为符号表!是一种保存键值对的抽象数据结构 本篇仍然定位在【redis前传】系列中,因为本篇仍然是在解析redis数据结构!当你尝试去了解redis时才能明白其中原理!才能明白为什么redis被大家吹捧速度快,而不是被告知redis很快! 应用场景 在Redis中有很多场景都是用了字典作为底层数据结构!我们使用最多的应该是redis的库的设置和五种基本数据类型的Has...

瑾的日常 216

UG二次开发之 三面摆正体代码分析

CIUGUIBlock 是一个从UIBlock 派生的一个类,为什么要从UIBlock 派生出CIUGUIBlock,这是为了兼容低版的UG。如果我们不从的UIBlock 派生控件类对象指针,在UG 8.5以下的版本,会出现编译错误的问题。这是一个简单的入门功能,包括了不少的常用的UF函,下面我们将结合成品代码一起分析一下常用的函数,这对初学者是必要的。根据创建好的UI控件,在 initialize_cb 中创建控件的指针对象。//根据选定的面,指定 X,Y坐标系轴。//根据变换的矩阵,平移实体。

u014657217的博客 351

Redis zset 渐进式rehash 实现原理、触发条件、执行流程以及数据一致性保障机制【分步源码解析】

Redis的zset数据结构采用哈希表与跳跃表结合的方式实现有序集合,哈希表部分使用渐进式rehash机制避免阻塞。当负载因子达到阈值时触发rehash,分为初始化、执行和完成三个阶段。执行阶段通过分步迁移桶数据,在读写操作时同步处理两个哈希表,确保数据一致性。zset的rehash复用Redis通用机制,但需与跳跃表协同处理。核心函数dictRehash实现分步迁移,在保证性能的同时完成哈希表扩容或缩容,体现Redis单线程模型下的高效设计理念。(149字)

NeoLshu的博客 1641

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Redis字典结构解析与渐进式rehash机制

哈希表作为计算机科学中的基础数据结构,通过键值映射实现高效数据存取。其核心原理是通过哈希函数将键转换为数组索引,理想情况下时间复杂度可达O(1)。Redis中的字典实现采用链地址法解决哈希冲突,并创新性地引入渐进式rehash机制,将扩容/缩容操作分摊到每次CRUD操作中,避免传统哈希表一次性rehash导致的性能抖动。这种设计特别适合Redis这样的高性能内存数据库,在保证数据一致性的同时维持稳定的吞吐量。在实际工程中,合理设置初始大小和监控负载因子是优化Redis字典性能的关键,这些技术也广泛应用于分布

weixin_34098209的博客 195

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入解析 Redis 渐进式 rehash:字典扩容机制、触发条件与实现原理

本文围绕「Redis rehash 过程」这一高频面试考点展开,完整讲解 Redis 字典(dict)基于双哈希表 `ht[2]` 的底层存储结构、哈希表扩展与收缩时的空间分配规则,以及**渐进式 rehash** 如何借助 `rehashidx` 标志把大规模数据迁移的计算量均摊到日常增删改查操作中,避免一次性扩容阻塞 Redis 命令执行。读完本文,你将不仅能在面试中讲清 HashMap /

gitblog_01024的博客 286

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

通用: Redis数据结构与扩容、rehash流程:从原理到源码详解

负载因子动态阈值:根据是否在后台持久化调整扩容时机,避免不必要的性能损耗。渐进式rehash:将数据迁移分摊到每次操作中,避免单线程阻塞,保证服务响应速度。2的幂容量设计:通过高效计算索引,同时方便扩容时翻倍容量。理解这一机制,不仅能帮助你更好地使用Redis(如合理设计Hash类型的键值对数量),更能借鉴其"渐进式"思想,在自己的系统中处理大规模数据迁移问题。由于Redis是通过C语言写的,建议不必苛求源码的深层次理解,只需要大概了解其扩容复制的原理即可▲如有纰漏,烦请指正~~

weixin_45149504的博客 749

redis数据结构 (3)——字典

dict是一个用于维护key和value映射关系的数据结构 . Redis的一个database中所有key到value的映射,就是使用一个dict来维护的,key 是对象的名称,value 是各种不同的对象,所有的对象都挂在一棵字典上。除了容纳所有对象的主干字典外,还有容纳所有带过期时间的对象的过期主干字典,它的 key 是对象的名称,value 是对象的过期时间戳。 typedefstr...

屎壳郎先生 991

Redis底层数据结构之Dict

Redis 的 Dict 是一个高效的键值对映射数据结构,采用双哈希表实现以支持无锁的渐进式 Rehash,确保扩容或缩容时的高效性能。它通过哈希表节点以链表形式解决哈希冲突,允许快速的查找、插入和删除操作,是实现 Redis 各种数据类型和高级功能的基础架构之一。

xiong_tai的博客 3424

Redis为什么快?

在进行渐进式 rehash 的过程中, 字典会同时使用 ht[0] 和 ht[1] 两个哈希表, 所以在渐进式 rehash 进行期间, 字典的删除(delete)、查找(find)、更新(update)等操作会在两个哈希表上进行: 比如说, 要在字典里面查找一个键的话, 程序会先在 ht[0] 里面进行查找, 如果没找到的话, 就会继续到 ht[1] 里面进行查找, 诸如此类。那么这里同样会带来新的问题,当数组容量特别大的时候,如果发生rehash那么会移动大量的元素,这样仍然会导致redis线程阻塞。

qq_45948401的博客 1352
上一篇: 华为程序员月薪27万,什么级别?吃瓜群众:我也是月入上万的
下一篇: 阿里四面,居然栽在一道排序算法上
Javaesandyou
博客等级 码龄5年 742粉丝 563原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值