005、API_数据结构

本文介绍了Redis中键的数据结构,包括string、hash、list、set和zset,并阐述了每种数据结构拥有多种内部编码实现,如linkedlist和ziplist。通过`object encoding`命令可以查询内部编码。Redis的设计允许在不改变外部数据结构和命令的情况下改进内部编码,如在3.2版本引入的quicklist。不同的内部编码在不同场景下有各自的优势,如ziplist节省内存但当元素增多时性能下降,此时Redis会根据配置自动转换为linkedlist。
摘要由CSDN通过智能技术生成

键的数据结构类型,它们分别是: string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集 合),这些只是Redis对外的数据结构,

在这里插入图片描述

实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现, 这样Redis会在合适的场景选择合适的内部编码
在这里插入图片描述

可以看到每种数据结构都有两种以上的内部编码实现,例如list数据结 构包含了linkedlist和ziplist两种内部编码。同时有些内部编码,例如ziplist, 可以作为多种外部数据结构的内部实现,可以通过object encoding命令查询 内部编码:

可以看到键hello对应值的内部编码是embstr,键mylist对应值的内部编 码是ziplist。 Redis这样设计有两个好处:第一,可以改进内部编码,而对外的数据 结构和命令没有影响,这样一旦开发出更优秀的内部编码,无需改动外部数 据结构和命令,例如Redis3.2提供了quicklist,结合了ziplist和linkedlist两者 69 的优势,为列表类型提供了一种更为优秀的内部编码实现,而对外部用户来 说基本感知不到。第二,多种内部编码实现可以在不同场景下发挥各自的优 势,例如ziplist比较节省内存,但是在列表元素比较多的情况下,性能会有 所下降,这时候Redis会根据配置选项将列表类型的内部实现转换为 linkedlist。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值