Redis数据结构及内部编码
Redis数据结构及内部编码
参考书籍 《Redis开发与运维》 非常建议阅读
Redis的数据结构分别是:
string(字符串) 、 hash(哈希) 、 list(列表) 、 set(集合) 、 zset(有序集
合)
使用type命令实际返回的就是当前键的数据结构类型
127.0.0.1:6379> type hello
string
数据结构 | 内部编码 |
---|---|
string |
·int: 8个字节的长整型。 ·embstr: 小于等于39个字节的字符串。 ·raw: 大于39个字节的字符串。 |
hash |
·ziplist(压缩列表) : 当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个) 、 同时所有值都小于hash-max-ziplist-value配置(默认64字节) 时, Redis会使用ziplist作为哈希的内部实现, ziplist使用更加紧凑的结构实现多个元素的连续存储, 所以在节省内存方面比hashtable更加优秀。
·hashtable(哈希表) : 当哈希类型无法满足ziplist的条件时, Redis会使用hashtable作为哈希的内部实现, 因为此时ziplist的读写效率会下降, 而hashtable的读写时间复杂度为O(1) 。 |
List |
·ziplist(压缩列表) : 当列表的元素个数小于list-max-ziplist-entries配置(默认512个) , 同时列表中每个元素的值都小于list-max-ziplist-value配置时(默认64字节) , Redis会选用ziplist来作为列表的内部实现来减少内存的使用。 ·linkedlist(链表) : 当列表类型无法满足ziplist的条件时, Redis会使用linkedlist作为列表的内部实现。 |
set |
·intset(整数集合) : 当集合中的元素都是整数且元素个数小于set-maxintset-entries配置(默认512个) 时, Redis会选用intset来作为集合的内部实现, 从而减少内存的使用。 ·hashtable(哈希表) : 当集合类型无法满足intset的条件时, Redis会使用hashtable作为集合的内部实现。 |
zset |
·ziplist(压缩列表) : 当有序集合的元素个数小于zset-max-ziplistentries配置(默认128个) , 同时每个元素的值都小于zset-max-ziplist-value配置(默认64字节) 时, Redis会用ziplist来作为有序集合的内部实现, ziplist可以有效减少内存的使用。 ·skiplist(跳跃表) : 当ziplist条件不满足时, 有序集合会使用skiplist作为内部实现, 因为此时ziplist的读写效率会下降。 |
数据结构 | 使用场景 |
---|---|
string |
缓存 计数 共享session |
hash | 对象信息存储 |
List |
队列 列表 |
set |
标签 推荐等 |
zset | 排行榜 |
查看内部编码命令 object encoding
127.0.0.1:6379> object encoding hello
"embstr"
Redis数据结构及内部编码相关推荐
- jedis mysql 数据结构_Redis的数据结构和内部编码
Redis的数据结构概述 redis是单线程,一次只执行一条命令,那为什么可以这么快: 纯内存 非阻塞IO 避免线程切换和竞态消耗 在使用过程中要注意: 一次只运行一条命令 避免长(慢)命令,例如ke ...
- 深入剖析Redis系列(四) - Redis数据结构与全局命令概述
前言 Redis 提供了 5 种数据结构.理解每种数据结构的特点,对于 Redis 的 开发运维 非常重要,同时掌握 Redis 的 单线程命令处理 机制,会使 数据结构 和 命令 的选择事半功倍. ...
- 你需要知道的那些 redis 数据结构(前篇)
戳蓝字"CSDN云计算"关注我们哦! 作者 | 饿了么物流技术团队 来源 | CSDN 企业博客 redis 对于团队中的同学们来说是非常熟悉的存在了,我们常用它来做缓存.或是实现 ...
- 华为架构师整理Redis数据结构的大厂最佳实践
1 概述 数据结构和内部编码 无传统关系型数据库的 Table 模型 schema 所对应的db仅以编号区分.同一 db 内,key 作为顶层模型,它的值是扁平化的.即 db 就是key的命名空间. ...
- 头条面试题:请谈谈Redis 9种数据结构以及它们的内部编码实现
转载自 头条面试题:请谈谈Redis 9种数据结构以及它们的内部编码实现 90%的人知道Redis 5种最基本的数据结构: 只有不到10%的人知道8种基本数据结构,5种基本+bitmap+GeoHa ...
- 为了拿捏 Redis 数据结构,我画了 40 张图
Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. 因此,这次我们就来好 ...
- 深入剖析Redis系列(七) - Redis数据结构之列表
前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...
- redis 数据结构
2019独角兽企业重金招聘Python工程师标准>>> redis对象 redis 数据结构 字符串对象 SDS(简单动态字符串) 列表对象 压缩列表(ziplist) 或 链表 ...
- Redis 数据结构与内存管理策略(上)
Redis 数据结构与内存管理策略(上) 标签: Redis Redis数据结构 Redis内存管理策略 Redis数据类型 Redis类型映射 Redis 数据类型特点与使用场景 String.Li ...
- 深入剖析Redis系列(五) - Redis数据结构之字符串
前言 字符串类型 是 Redis 最基础的数据结构.字符串类型 的值实际可以是 字符串(简单 和 复杂 的字符串,例如 JSON.XML).数字(整数.浮点数),甚至是 二进制(图片.音频.视频),但 ...
最新文章
- 【NOI2015】软件包管理器
- mysql left day 7_day7-mysql函数
- 自主生态再进一步,龙芯中科完成.NET3.1-LoongArch64平台研发
- Cygwin 下载极速源推荐
- Linux内核奔溃分析
- javascript动态改变窗口大小
- Git如何忽略已经上传的文件或文件夹?
- OpenSceneGraph FAQ
- 1、JavaScript 函数,2、JavaScript 正则表达式,3、JavaScript JSON,
- 只上传APK而不进行反编译,在服务器集成第三方SDK。是如何实现的
- linux关闭邮件提示错误,LINUX命令关闭 You have mail in /var/spool/mail/root邮件提醒功能...
- uniapp 自定义unicode 并使用
- 宁浩网sql注入工具_国产SQL注入漏洞测试工具 - 超级SQL注入工具(SSQLInjection)...
- 50岁的哆啦A梦“撞”上63岁的卡西欧,阿里云数据中台告诉你火花能有多大
- 泊松分布和指数分布:通俗易懂
- 打印机无法打印的一些解决办法
- 基于C#的机器人仿真平台和机器人运动学算法实现
- java common log使用,log4j和commons.logging日志记录的使用方法
- 正则表达式(正负数,保留两位小数)
- 59 Three.js 渲染两个场景和使用不同的相机,渲染在一个场景里面