揭秘Redis五大不常用数据类型

Redis协议变更后,五大高性能替代方案深度解析 本文深度解析了Redis协议变更后,五大高性能替代方案:Dragonfly、KeyDB、Garnet、Valkey和Redict。文章对比了它们的核心架构、性能表现、迁移成本及适用场景,为面临技术选型的开发者提供了清晰的实战选型指南,帮助您在追求极致性能、平滑迁移或特定生态整合时做出明智决策。 阅读详情

对于前一篇文章,已经详细讲解了redis中最关键的五个数据类型

streams数据类型

Redis 的 Streams 是一种专门为处理流式数据设计的高级数据类型,于 Redis 5.0 版本引入,提供了持久化、多消费者、消息确认等特性,非常适合构建消息队列、事件日志系统等场景。

核心特性

  • 持久化:所有消息都被持久化到磁盘,重启后不丢失
  • 有序性:消息按时间顺序存储,每个消息有唯一 ID
  • 多消费者模式:支持多个消费者组同时消费,每个组独立维护消费进度
  • 消息确认机制:确保消息被正确处理后才标记为已消费
  • 灵活的读取方式:支持从开头、结尾、指定位置读取消息

基本概念

  1. 消息(Message):Streams 中的基本单位,包含唯一 ID 和键值对字段
  2. 消费者组(Consumer Group):一组消费者的集合,共同消费流中的消息
  3. 消费者(Consumer):消费者组中的具体成员,负责处理消息
  4. 消息 ID:格式为 timestamp-sequence(如 1620000000000-0),确保唯一性和有序性

geospatial数据类型

Redis 的 Geospatial(地理空间)类型是一种专门用于存储和操作地理位置信息的数据结构,它允许你存储经纬度坐标,并提供了一系列用于地理位置计算的命令。

存储一些点之后,就可以让用户给定一个坐标,去从刚才存储的点里进行查找(按照半径,矩形区域),这个功能在”地图“应用中非常重要

hyperloglog数据类型

Redis 的 HyperLogLog 是一种用于 cardinality(基数)统计的数据结构,它能够以极低的内存消耗(约 12KB)来估算一个集合中不重复元素的数量。

应用场景只有一个,估算集合中的元素个数

set,有一个应用场景,统计服务器的UV(用户访问的次数)

使用set当然可以统计UV,但是最大的问题在于,如果UV数据量非常大,set就会消耗很多的内存空间,假设set存储userid,每个userid按照8字节算,1亿UV==8亿字节==800mb

之所以要消耗这么大的空间,是因为set需要存储每个元素

而hyperloglog不存储元素的内容,但是能够记录”元素特征“,在新增元素的时候,能够知道当前元素是一个崭新的第一次出现的,还是一个已经存在的元素

只能用来计数,记录当前集合中有多少个不同的元素,但是不能告诉你这些元素都是啥

具体的操作需要分析源码---核心思路是”位操作“

这个是有一定的误差的

误差大概在百分之0.81,并且这个hyperloglog可以最多使用12kb空间就能够实现上述效果(每个 HyperLogLog 键仅占用约 12KB 内存,这个大小与其含有的数据量无关,无论是10还是100还是1个亿)

特别适合统计海量数据中的独立元素数量

适用场景:

  • 网站独立访客(UV)统计
  • 搜索引擎关键词去重计数
  • 大型活动参与人数统计
  • 任何需要统计不重复元素数量的场景(且可以接受一定误差)

局限性:

  • 不存储实际元素,只记录基数估算值,无法获取具体元素
  • 存在一定误差(约 0.81%),不适合需要精确计数的场景
  • 无法删除已添加的元素

HyperLogLog 是空间与精度之间的一种平衡选择,当需要统计极大规模数据的基数且可以接受小误差时,它是非常理想的解决方案。

bitmaps数据类型

使用bit位来表示整数

0000 0000 0000 0000 0000 0000 0000 0000 0000

位图本质上,就还是一个集合,属于是set类型针对整数的特化版本

这个版本节省空间

bitfields数据类型

在c语言中我们学过位段,也叫做位域

struct Test{
int a:8;
int b:16;
int c:8;
}

这里的数据就是描述这几个成员实际占几个bit位的,位域本质上是让我们更精确进行位操作的一种方法

redis中的bitfields和c中的位域非常相似

bitfield可以理解成一串二进制序列(字节数组)

同时可以把这个字节数组中的某几个位,赋予特定的含义,并且可以进行读取/修改/算术运算相关操作

位域这个东西,相比于之前的string/hash来说,目的仍然是节省空间

BITFIELD 命令扩展了 Redis 字符串类型的位操作能力,使其能够更灵活地处理各种需要精细位控制的场景,特别适合需要高效利用内存存储大量小数值的情况。

Redis 数据结构大揭秘:String、Hash、List、Set、ZSet 的正确打开方式 某内容推荐平台需要处理用户的异步任务(如生成推荐结果),为了提升效率,使用 Redis 的 List 类型实现任务队列。通过 Redis 的 List 实现异步任务队列,系统能够高效地分发和处理任务,同时避免了任务堆积导致的性能瓶颈。欢迎在评论区分享你的经验!通过 Set 存储用户兴趣标签,系统能够高效地管理和查询用户的兴趣偏好,同时避免了重复标签的问题。通过 Redis 的原子性操作,秒杀活动中的库存扣减能够毫秒级完成,显著提升了系统的吞吐量。:Hash 是一个键值对的集合,适合存储对象的多个字段。 阅读详情

相关推荐

【百万级并发架构】Python操作Redis完全指南:从缓存设计到实时计算引擎实战

🚀 “微博热搜榜如何实现秒级更新?本文揭秘Redis+Python的实时计算黑科技!💡 “文末赠送『Redis性能压测手册』,轻松应对双11级别流量冲击!

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 1269

Redis数据类型超全解析:5大核心+4种高级,一文搞定数据结构选型

选型心法读写模式:随机访问→Hash,顺序访问→List/Stream数据特性:需排序→Sorted Set,需去重→Set规模大小:小数据→ziplist,大数据→分布式方案🔥终极口诀缓存会话用String对象属性用Hash消息队列用Stream统计去重用HyperLogLog排行榜用Sorted Set#Redis实战 #数据结构 #性能优化。

全栈开发工程师 2082

Redis从入门到精通专栏大纲

设计原则:Redis使用的黄金法则性能优化:生产环境调优checklist安全加固:Redis安全配置指南团队协作:Redis开发和运维规范。

苦哈哈的 C++ 程序员,写这个技术博客不是为了装逼,也不是为了立人设,是为了收割流量 840

【Redis】 五大基础数据类型 底层原理深度解析

不仅讲解它们的底层数据结构实现,还揭秘设计原理、优缺点、以及为什么要这么设计,是面试和进阶必备的硬核知识。String:基于 SDS,最大 512MB,用于缓存、计数、分布式锁。List:基于 QuickList(双向链表+ziplist),头尾极快、内存紧凑。Hash:基于 ziplist + hashtable,最适合存对象,支持单字段修改。Set:基于 intset + hashtable,去重、集合运算、随机抽取。ZSet:基于跳表 + 哈希表,排序性能强;跳表比红黑树。

2401_89675417的博客 473

Redis下载安装与配置实战指南

简介:Redis是一款由Salvatore Sanfilippo开发的高性能键值存储系统,广泛应用于缓存、消息队列和事件驱动等场景。本文详细介绍了Redis在Windows和Linux平台的下载与安装方法,涵盖服务启动、基本配置、五种核心数据类型及其操作命令,并讲解了RDB和AOF持久化机制,以及主从复制、哨兵监控和集群分片等高可用架构。通过本指南,开发者可快速部署并掌握Redis的基础使用与核心功能,为构建高效稳定的现代应用提供支持。

weixin_31419153的博客 1191

S32K144驱动TPS929120避坑实录:从原理图设计到PWM调光漏电流的完整解决流程

本文详细解析了S32K144驱动TPS929120在车规LED驱动中的常见问题与解决方案,重点解决了PWM调光漏电流的行业难题。从原理图设计、FlexWire通信到软件调试,提供了一套完整的工程化避坑指南,特别针对车规MCU应用中的温度漂移、地址冲突等痛点给出了实用建议。

weixin_30872157的博客 561

架构师必读:揭秘Redis五大数据类型及超实用应用场景!

大家好,我是你们的小米!今天我们要来聊聊一个在面试中经常被问到的话题:Redis的五种数据类型及其应用场景。作为一名热爱技术的小伙伴,对于这个话题,我们可是要深入挖掘一下哦!

孤芳不自赏 196

私有化大模型部署:企业AI应用的核心架构

私有化大模型部署不是“一次性项目”,而是企业AI的“长期主义”投资——它需要企业投入时间、金钱和精力,但回报是数据安全、定制化能力、核心竞争力的提升。就像“自家厨房”一样,私有化大模型可能初期麻烦,但一旦搭建起来,就能为企业“做”出符合自己口味的“特色菜”,而这些“特色菜”,正是企业在激烈竞争中的“护城河”。愿你能构建属于自己的“AI大脑”,让技术真正赋能业务,让复杂变简单,让深奥变通透。附录:私有化大模型部署架构图(注:可根据企业需求调整,此为通用架构)

AI天才研究院 1021

用Redis五大核心数据类型解决真实开发痛点:从电商秒杀到社交推荐,代码级实战!

Redis不仅是缓存,更是高并发场景下的瑞士军刀!本文揭秘String、List、Hash、Set、Sorted Set五大类型在真实项目中的高阶玩法,结合Java代码手把手教你解决缓存穿透、实时排行榜、分布式锁等10大棘手问题。

🚩 Flag:今年绝不写屎山代码(去年也是这么说的) 243

RANSAC地面点分割:从原理到C++实战优化

本文深入解析RANSAC算法在点云地面分割中的原理与C++实战优化,涵盖动态迭代次数、自适应阈值等关键技巧,通过并行计算和内存访问优化提升性能,适用于激光雷达点云处理。

weixin_29015051的博客 277

nsight-system教程

参考nsight-compute使用教程-优快云博客。

youzjuer的博客 1894

终极指南:Scrapy-Redis 5大核心组件实现原理全揭秘

Scrapy-Redis 是一个基于 Redis 的 Scrapy 扩展组件,它通过将 Scrapy 的核心功能与 Redis 数据库相结合,实现了分布式爬虫系统。本文将深入解析 Scrapy-Redis 的5大核心组件——调度器(Scheduler)、去重过滤器(DupeFilter)、队列(Queue)、管道(Pipelines)和爬虫(Spiders)的实现原理,帮助开发者快速掌握分布式爬虫

gitblog_00289的博客 983

ComfyUI的G-Dino模型加载器报错解决方案:从崩溃到重生

遇到G-Dino模型加载器报错不要慌,按照本文的步骤操作,99%的问题都能解决。模型文件正确下载到指定位置segment_anything节点安装完整且无冲突需要补充更多细节或故障排除方法吗?可以随时告诉我。

2301_78150483的博客 4023

Redis数据结构深度剖析:从核心类型到高级应用,构建高性能解决方案的基石

Redis的数据结构远不止是五个简单的类型名称,它们是一个完整的、为解决不同领域问题而生的工具集。从全能基础的String,到复杂精妙的Zset和Stream,每一种结构都凝聚了对性能与效率的极致追求。深入理解其底层机制与适用边界,能够帮助我们在架构设计时做出最明智的选择,让Redis真正成为驱动高性能应用的强大引擎。记住,选择合适的数据结构,往往比优化算法本身带来的性能提升更加显著。

用文字记录技术,用分享回馈社区,用坚持见证成长 1870

图像识别火灾检测系统实战:从火焰特征到YOLO部署全解析

计算机视觉技术正深入改变传统消防的感知方式。图像识别火灾检测利用摄像头采集的视频流,通过颜色、动态和形态特征分析,实现早期火情的自动发现与定位。其核心原理在于,火焰在视觉上具有独特的颜色分布、闪烁特性和轮廓变化,借助目标检测模型如YOLO,可在复杂场景中区分真实火焰与干扰物。这项技术广泛应用于仓库、园区、隧道等大空间场所,是智慧消防的重要支撑。本文从火焰视觉特征、数据集构建、模型选型与系统架构设计出发,结合部署实践中的误报与算力优化经验,为开发者提供一套可落地的视频火焰检测方案。

weixin_42533751的博客 245

海康网口相机不能被flexscan3d识别到MVS版本为4.6.1,flex为3.3.24在MVS中能够检测到,但是在flex中只能看到电脑自带相机,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1042

Redis数据结构深度揭秘:从闪电操作到性能陷阱的底层真相

Redis极速背后的数据结构选择艺术 摘要:Redis的卓越性能不仅源于内存存储,更在于其精妙的数据结构设计。全局哈希表通过链式哈希和渐进式rehash实现O(1)查询;五大核心数据结构(String、List、Hash、Set、ZSet)根据数据特征自动切换编码格式,如压缩列表在存储小对象时节省高达66%内存。但动态切换可能引发性能风暴,如哈希表与压缩列表的转换导致延迟激增。Redis采用"低效"结构换取内存效率,通过连续内存布局提升CPU缓存命中率。开发者需警惕慢操作,合理拆分大数据

m0_53626105的博客 847

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(上篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2585

揭秘Redis-py高频踩坑点:90%开发者都忽略的5个关键细节

掌握Redis-py操作精髓,避开高频踩坑点。本Redis-py操作教程详解连接管理、序列化误区、管道使用、超时设置与连接池优化,覆盖实际开发常见场景。提升性能与稳定性,90%开发者忽略的关键细节一文讲透,值得收藏。

LogicGlow的博客 1080

Devexpress16.2.6破解工具

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

揭秘PHP连接Redis集群的5大坑:你避开了吗?

掌握PHP连接Redis集群的正确方法,避免常见错误。本文详解5大坑及解决方案,涵盖高并发场景下的缓存策略、Predis客户端配置与节点通信机制,提升系统稳定性与性能,值得收藏。

FastCompile的博客 816

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Redis 性能揭秘:为什么它能达到每秒10万+的QPS?

序号原因关键点1纯内存比磁盘快10万倍2高效数据结构SDS、跳表、ziplist3单线程+epoll无锁、无切换4避免慢操作禁止KEYS,警惕bigkey5RESP协议+Pipeline解析快,RTT低一句话总结Redis 把所有慢的东西都扔到内存、异步、或者文档警告,主线程只做最快的事。欢迎在评论区分享你遇到的 Redis 性能问题和优化经验。底部锚点⬆ ⬆ 顶部 ⬆ ⬆⬇ ⬇ 底部 ⬇ ⬇⬆ ⬆ 顶部 ⬆ ⬆。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2091

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

揭秘Redis分布式锁的5大坑:PHP开发者必须避开的陷阱

掌握PHP Redis 分布式锁的正确用法,避免高并发场景下的资源竞争问题。详解锁超时、误删、不可重入等5大常见陷阱及应对策略,保障系统稳定。适用于秒杀、库存扣减等分布式场景,提升代码可靠性,值得收藏。

CodeIsle的博客 641

揭秘Redis底层:一窥数据结构的奥秘与魅力

本文将深入浅出地解析Redis底层五大核心数据结构——简单动态字符串(SDS)、链表、字典、跳跃表和整数集合,通过生动的比喻和实例,帮助读者理解其工作原理与应用场景,领略Redis强大性能背后的秘密。理解并熟练运用这些数据结构,不仅能提升对Redis的驾驭能力,更能启发我们在日常开发中借鉴其设计理念,优化自家系统的数据结构设计,提升软件性能与效率。跳跃表犹如摩天大楼中的多层电梯系统,每一层电梯(层级)覆盖部分楼层(节点),高层电梯直达顶层,快速定位目标。

知行同学 589

揭秘Java与Redis高效集成方案:5大核心技巧提升系统响应速度

掌握Java与Redis高效集成方案,提升系统响应速度。本文通过典型Java Redis整合案例,解析缓存穿透、雪崩应对、连接池优化等5大核心技巧,适用于高并发场景。显著降低响应延迟,增强系统稳定性,值得收藏。

InitFlow的博客 989

【Redis Geo实战】一键搞定附近的人!地理位置查询黑科技揭秘

Redis Geo将复杂的地理计算封装为简单命令GEORADIUS- 圆形区域查询GEOSEARCH- 矩形/多边形搜索(Redis 6.2+)GEOHASH- 获取位置编码性能实测1.2ms0.3ms0.8ms行动指南<10万位置 → 单节点Redis10万~1亿 → Redis分片集群1亿+复杂查询 → Redis+PostGIS混合架构🚀立即体验:在你的项目中接入Redis Geo,让位置服务不再是瓶颈!🌟扩展应用实时疫情风险区域提示车联网轨迹分析智慧城市人流热力图。

全栈开发工程师 1262

Redis100篇 - Redis的哈希表为什么快 扩容和缩容机制详解

Redis哈希表高效的关键在于其精心设计的底层结构、渐进式rehash机制和负载因子控制。哈希表使用链地址法解决冲突,并通过SipHash算法保证均匀分布。当负载因子超过阈值时,Redis会触发渐进式扩容/缩容,分步迁移数据到新哈希表,避免服务中断。核心优化包括:快速索引计算(位运算替代取模)、双哈希表设计(实现平滑rehash)以及动态调整大小(2的幂次扩容)。这些特性共同确保了Redis哈希表在O(1)时间复杂度下的稳定性能。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: Redis5安装与核心命令详解
下一篇: Redis渐进式遍历:安全高效的键扫描术
Fcw0551
博客等级 码龄2年 330粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值