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数据结构及内部编码相关推荐

  1. jedis mysql 数据结构_Redis的数据结构和内部编码

    Redis的数据结构概述 redis是单线程,一次只执行一条命令,那为什么可以这么快: 纯内存 非阻塞IO 避免线程切换和竞态消耗 在使用过程中要注意: 一次只运行一条命令 避免长(慢)命令,例如ke ...

  2. 深入剖析Redis系列(四) - Redis数据结构与全局命令概述

    前言 Redis 提供了 5 种数据结构.理解每种数据结构的特点,对于 Redis 的 开发运维 非常重要,同时掌握 Redis 的 单线程命令处理 机制,会使 数据结构 和 命令 的选择事半功倍. ...

  3. 你需要知道的那些 redis 数据结构(前篇)

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 饿了么物流技术团队 来源 | CSDN 企业博客 redis 对于团队中的同学们来说是非常熟悉的存在了,我们常用它来做缓存.或是实现 ...

  4. 华为架构师整理Redis数据结构的大厂最佳实践

    1 概述 数据结构和内部编码 无传统关系型数据库的 Table 模型 schema 所对应的db仅以编号区分.同一 db 内,key 作为顶层模型,它的值是扁平化的.即 db 就是key的命名空间. ...

  5. 头条面试题:请谈谈Redis 9种数据结构以及它们的内部编码实现

    转载自  头条面试题:请谈谈Redis 9种数据结构以及它们的内部编码实现 90%的人知道Redis 5种最基本的数据结构: 只有不到10%的人知道8种基本数据结构,5种基本+bitmap+GeoHa ...

  6. 为了拿捏 Redis 数据结构,我画了 40 张图

    Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. 因此,这次我们就来好 ...

  7. 深入剖析Redis系列(七) - Redis数据结构之列表

    前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...

  8. redis 数据结构

    2019独角兽企业重金招聘Python工程师标准>>> redis对象 redis 数据结构 字符串对象  SDS(简单动态字符串) 列表对象  压缩列表(ziplist) 或 链表 ...

  9. Redis 数据结构与内存管理策略(上)

    Redis 数据结构与内存管理策略(上) 标签: Redis Redis数据结构 Redis内存管理策略 Redis数据类型 Redis类型映射 Redis 数据类型特点与使用场景 String.Li ...

  10. 深入剖析Redis系列(五) - Redis数据结构之字符串

    前言 字符串类型 是 Redis 最基础的数据结构.字符串类型 的值实际可以是 字符串(简单 和 复杂 的字符串,例如 JSON.XML).数字(整数.浮点数),甚至是 二进制(图片.音频.视频),但 ...

最新文章

  1. 【NOI2015】软件包管理器
  2. mysql left day 7_day7-mysql函数
  3. 自主生态再进一步,龙芯中科完成.NET3.1-LoongArch64平台研发
  4. Cygwin 下载极速源推荐
  5. Linux内核奔溃分析
  6. javascript动态改变窗口大小
  7. Git如何忽略已经上传的文件或文件夹?
  8. OpenSceneGraph FAQ
  9. 1、JavaScript 函数,2、JavaScript 正则表达式,3、JavaScript JSON,
  10. 只上传APK而不进行反编译,在服务器集成第三方SDK。是如何实现的
  11. linux关闭邮件提示错误,LINUX命令关闭 You have mail in /var/spool/mail/root邮件提醒功能...
  12. uniapp 自定义unicode 并使用
  13. 宁浩网sql注入工具_国产SQL注入漏洞测试工具 - 超级SQL注入工具(SSQLInjection)...
  14. 50岁的哆啦A梦“撞”上63岁的卡西欧,阿里云数据中台告诉你火花能有多大
  15. 泊松分布和指数分布:通俗易懂
  16. 打印机无法打印的一些解决办法
  17. 基于C#的机器人仿真平台和机器人运动学算法实现
  18. java common log使用,log4j和commons.logging日志记录的使用方法
  19. 正则表达式(正负数,保留两位小数)
  20. 59 Three.js 渲染两个场景和使用不同的相机,渲染在一个场景里面

热门文章

  1. nginx详解反向代理,负载均衡,LNMP架构上线动态网站
  2. 定义工作,解读自我——IT帮2019年2月线下活动回顾
  3. B. Forgery
  4. Java 常用对象-System类
  5. OpenWRT原版固件安装
  6. 8421转换法可以轻松实现各进制之间的转换
  7. 东北三省计算机专业好的学校,东北地区哪个大学比较好 各自的王牌专业是什么...
  8. nginx相关概念——负载均衡和动静分离
  9. VXLAN配置实例(五)——云计算数据中心访问公司外部站点典型配置实例(超级超级难的网络配置!!!)
  10. BGP联邦原理及配置实例