当前位置: 首页 > news >正文

Redis核心数据结构与底层实现

 5种基础数据结构

  1. String 字符串
  2. list 列表
  3. hash 字典
  4. set 集合
  5. zset 有序集合

deepseek的回答

String

内部编码

redis根据当前值的类型和长度决定使用哪种内部编码,共3种内部编码:

  • int :value为整数时
  • embstr : 短字符串(长度<= 44字节)
  • raw :长度 > 44字节

embstr:embstr 利用 jemalloc 的 64 字节内存块,连续存放 redisObject(16 字节)和 SDS 头(3 字节)+ 字符串内容(44 字节)+ 结束符(1 字节)。

rawredisObject 和字符串数据(SDS,Simple Dynamic String)分开存储

应用场景

计数器(如视频播放数计数)

incr key : 对值做自增操作

可以实现快速计数,查看缓存,同时异步落地到其他数据源。

共享session
图源:《redis开发与运维》付磊 张益军编著缓存
图源:《redis开发与运维》付磊 张益军编著限速

每分钟获取验证码的频率,同一ip每秒钟访问不得超过n次等

设置key的过期时间: set key value EX 60 NX

Hash

内部编码

  • ziplist / listpack (Redis 7.0 后,ziplist 被 listpack 替代(解决 ziplist 连锁更新问题),但逻辑类似。)
  • hashtable

List

内部编码

ziplist/linkedlist → quicklist(ziplist 节点) → quicklist(listpack 节点)

Set

内部编码:listpack

zset

内部编码

  • ziplist / listpack
  • skiplist

http://www.dtcms.com/a/37534.html

相关文章:

  • jmeter 如何做移动端的测试 特别是兼容性测试
  • 探索超声波的奥秘——定时器与PCA
  • 阳光高考瑞数6vmp算法还原
  • DeepSeek赋能大模型内容安全,网易易盾AIGC内容风控解决方案三大升级
  • Axios 取消请求
  • 微软推出Office免费版,限制诸多,只能编辑不能保存到本地
  • Ubuntu搭建esp32环境 配置打开AT指令集 websocket功能
  • C++引用
  • 【Deepseek+Browser-Use搭建 Web UI自动化】
  • AWS SDK for Java 1.x 403问题解决方法和原因
  • 【学习笔记】Kubernetes
  • React加TypeScript最新部署完整版
  • 系统定时器SysTick
  • Spring 源码硬核解析系列专题(七):Spring Boot 与 Spring Cloud 的微服务源码解析
  • 【前端进阶】07 http协议和前端开发有什么关系
  • springboot实现文件上传到华为云的obs
  • Android 12.0 第三方app接收不到开机广播问题的解决以及开机自启动功能实现一
  • Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)
  • 为什么一个ip地址可以用浏览器打开,但是不能ping通
  • 算法题训练 ——— NC313 两个数组的交集
  • vscode中使用PlatformIO创建工程加载慢
  • 优选算法大集合(待更新)
  • 25.2.25补题
  • freetype封装
  • Java进阶学习笔记95——网络编程
  • langchain系列(五)- LangChain 的tool原理与代码实现
  • SpringSecurity获取当前登录用户信息
  • AI提示词的种类与适合的任务
  • DeepSeek开源周 Day02:从DeepEP开源趋势重新审视大模型Infra
  • WordPress Course Booking System SQL注入漏洞复现 (CVE-2025-22785)(附脚本)