当前位置: 首页 > 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

相关文章:

  • 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 两个数组的交集
  • 庆云网站建设ihuibest/全网营销推广方案
  • wordpress网站数据备份/想要网站导航正式推广
  • 上海网站托管/什么叫seo网络推广
  • 做暧视频网站大全/百度关键词挖掘
  • 单位网站建设收费标准/市场推广方案
  • 科技有限公司可以做网站建设吗/百度图片搜索网页版