数据类型 实现方式 描述
String int 用来保存整数值
raw 用来保存长字符串(长度大于44字节)
embstr 保存短字符串(长度小于44字节)
List ziplist(压缩列表)

列表保存元素个数小于512个

每个元素长度小于64字节

压缩列表是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,相对于字典数据结构,压缩列表用于元素个数少、元素长度小的场景

linkedlist(双端链表) 当无法使用ziplist列表时则使用linkedlist
Hash

ziplist(压缩列表)

1、列表保存元素个数小于512个

2、每个元素长度小于64字节

hashtable

hashtable 编码的哈希表对象底层使用字典数据结构,哈希对象中的每个键值对都使用一个字典键值对。

SET intset intset 编码的集合对象使用整数集合作为底层实现,集合对象包含的所有元素都被保存在整数集合中
hashtable hashtable 编码的集合对象使用 字典作为底层实现,字典的每个键都是一个字符串对象,这里的每个字符串对象就是一个集合中的元素,而字典的值则全部设置为 null。这里可以类比Java集合中HashSet 集合的实现,HashSet 集合是由 HashMap 来实现的,集合中的元素就是 HashMap 的key,而 HashMap 的值都设为 null。
ZSET ziplist ziplist 编码的有序集合对象使用压缩列表作为底层实现,每个集合元素使用两个紧挨在一起的压缩列表节点来保存,第一个节点保存元素的成员,第二个节点保存元素的分值。并且压缩列表内的集合元素按分值从小到大的顺序进行排列,小的放置在靠近表头的位置,大的放置在靠近表尾的位置。
skiplist

skiplist 编码的有序集合对象使用 zet 结构作为底层实现,一个 zset 结构同时包含一个字典和一个跳跃表

字典的键保存元素的值,字典的值则保存元素的分值;跳跃表节点的 object 属性保存元素的成员,跳跃表节点的 score 属性保存元素的分值。

  这两种数据结构会通过指针来共享相同元素的成员和分值,所以不会产生重复成员和分值,造成内存的浪费。

  说明:其实有序集合单独使用字典或跳跃表其中一种数据结构都可以实现,但是这里使用两种数据结构组合起来,原因是假如我们单独使用 字典,虽然能以 O(1) 的时间复杂度查找成员的分值,但是因为字典是以无序的方式来保存集合元素,所以每次进行范围操作的时候都要进行排序;假如我们单独使用跳跃表来实现,虽然能执行范围操作,但是查找操作有 O(1)的复杂度变为了O(logN)。因此Redis使用了两种数据结构来共同实现有序集合。

https://www.cnblogs.com/ysocean/p/9102811.html

https://www.cnblogs.com/ysocean/p/9080942.html

redis数据类型介绍相关推荐

  1. Redis 数据类型介绍

    Redis 数据类型介绍 你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值.也就是说,你不必仅仅把字符串当作键所指向的值.下列这些数据类型都可 ...

  2. 第3节-Redis数据类型介绍以及应用

    第3节-Redis数据类型介绍以及应用 1.9大类型 String(字符类型) Hash(散列类型) List(列表类型) Set(集合类型) SortedSort(有序集合类型,简称zset) Bi ...

  3. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁

    1.NoSQL数据库 1.1 NoSQL数据库概述 NoSQL(NosQL = Not Only sQL ),意即"不仅仅是sQL",泛指非关系型的数据库.NoSQL不依赖业务逻辑 ...

  4. redis种类型对应java类型_Redis的五种基本数据类型介绍

    Redis作为缓存具有极其丰富的功能,比如计数器.好友关系以及排行榜等等.而Redis之所能够实现如此强大的功能,完全是依赖着它的基本数据结构.今天我们来看看Redis的五种基本的数据结构,分别是字符 ...

  5. Redis五种数据类型介绍

    概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合.本文详细介绍这五种数据类型的使用方法.本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方 ...

  6. redis介绍, redis安装, redis持久化, redis数据类型

    redis介绍 Redis和Memcached类似,也属于k-v数据存储 Redis官网redis.io, 当前最新稳定版4.0.1 支持更多value类型,除了和string外,还支持hash.li ...

  7. Redis数据类型及编码格式——介绍及String篇

    Redis核心对象 reids中定义了一个数据结构用来统一表示各种数据类型,它叫做redisObject typedef struct redisObject {unsigned type:4; // ...

  8. Redis数据介绍与指令大全

    数据类型初识 作为 Key-value 型数据库,Redis 也提供了键(Key)和键值(Value)的映射关系.但是,除了常规的数值或字符串,Redis 的键值还可以是以下形式之一: Lists ( ...

  9. 三大缓存框架ehcache、memcache和redis的介绍

    三大缓存框架ehcache.memcache和redis的介绍 2016-04-12 架构说 4964 阅读 最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存 ...

最新文章

  1. Python学习笔记:字符串和编码
  2. idea调试debug技巧_这几个IDEA高级调试技巧,用了都说好!
  3. LINUX下SYN***战
  4. [Redux/Mobx] Mobx的设计思想是什么
  5. python dicom图像分割_python读取DICOM头文件的实例
  6. 没人性!让我们这么早来上班
  7. Sentinel2A影像监测家乡油菜长势!!
  8. 阿里云申请免费ssl证书并配置nginx
  9. 简单的限流保护电路图大全(六款简单的限流保护电路设计原理图详解)
  10. Mysql开启3306端口远程访问
  11. js之css样式特效 ---- js篇
  12. eco淘客机器人-ECO云返利系统淘客
  13. 黄页宝贝工具栏软件发布了
  14. java实现图片转pdf文件
  15. java企业排班系统企业考勤人脸识别考勤系统源码企业批量排班网站
  16. 远程桌面连接不上是什么原因?怎么解决
  17. 统一依赖管理Composing builds
  18. 用友加密服务器修改密码,用户密码怎么修改?
  19. UVA140回溯法剪枝剪多少的讨论
  20. 百度卫星地图无法使用鼠标绘制工具的问题简单解决方案

热门文章

  1. LiteOS学习(一)任务
  2. 【任务中心】使用说明
  3. 使用RTT代替UART,把你的JLink变成串口调试助手~
  4. 实现可点击的幸运大转盘
  5. 求n的阶乘和求n的阶乘和——两种方法
  6. python生成链接二维码
  7. 《LCD总结篇(中级)》
  8. 机器学习基础:概率和熵
  9. 信号与系统(二十一)——无失真传输和理想低通滤波器
  10. 奥利给!2020 年必看的100 条忠告