前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis数据结构和内部编码

Redis数据结构和内部编码

作者头像
行 者
发布2018-03-26 15:36:31
1.2K0
发布2018-03-26 15:36:31
举报
文章被收录于专栏:运维技术迷

type命令时间返回的就是当前键的 数据结构类型,分别为:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合),但是这些只是redis对外的数据结构。如下图所示:

《Redis数据结构和内部编码》
《Redis数据结构和内部编码》

实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现,这样redis会再合适的场景选择合适的内部编码。如下图:

《Redis数据结构和内部编码》
《Redis数据结构和内部编码》

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

代码语言:javascript
复制
127.0.0.1:6379> object encoding hello
"embstr"
127.0.0.1:6379> object encoding mylist
"ziplist"

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档