Redis的数据类型到底有什么奥秘

本文介绍了Redis中的五种常用数据类型:string(raw/int/embstr)、hash(hashtable/ziplist)、list(linkedlist/ziplist/quicklist)、set(hashtable/inset)和zset(skiplist/ziplist)。详细解释了它们的内部编码机制,并提到了查看数据类型和编码方式的方法。
摘要由CSDN通过智能技术生成

这里我们先只介绍五种常用的数据类型~

目录

1、string

2、hash

3、list

4、set

5、zset

6、示例


1、string

  • 数据类型:string
  • 内部编码:raw、int、embstr

        说明: raw是最基本的字符串--底层是一个char数组(此处的char是一个字节的);int是redis中通常用来实现计数功能时,也就是当value为一个整数时,可能redis会直接使用int来保存;embstr专门针对短字符串进行特殊优化处理


2、hash

  • 数据类型:hash
  • 内部编码:hashtable、ziplist

        说明:hashtable就是redis内部哈希表的一个实现;ziplist在哈希表里面元素比较少的时候可能就是优化成ziplist,压缩了列表,能够节省空间~

        为啥要进行压缩呢?redis上有很多的key,可能是某些key的value是hash,当key特别多,对应的hash也特别多,但是每个hash又不大的情况下,就尽量去压缩,压缩之后就可以让整体占用的内存更小了~ 


3、list

  • 数据类型:list
  • 内部编码:linkedlist、ziplist

        说明:linkedlist就是一个链表;ziplist同上,压缩列表;从redis3.2开始,引入了新的实现方式:quicklist, quicklist就是一个链表,而他的每一个元素又是一个ziplist,这样做能够同时兼顾linkedlist和ziplist的优点,把空间和效率都能够兼顾到~


4、set

  • 数据类型:set
  • 内部编码:hashtable、inset

        说明:hashtable同上述的hashtable;inset集合中存的都是整数


5、zset

  • 数据类型:zset 
  • 内部编码:skiplist、ziplist

        说明:skiplist:跳表 ,同普通链表不同的是每个节点有多个指针域,能够巧妙的搭配这些指针域的指向,就可以做到~从跳表上查询元素的时间复杂度为O(logN)

        上述redis的数据类型中,具体使用哪种编码方式,我们是感知不到的,redis内部都是自适应的~


6、示例

命令:

  • 查看数据类型:type key
  • 查看内部编码方式:object encoding key

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙洋静

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值