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

Redis数据结构拾遗

原创
作者头像
awk
修改2019-03-28 10:44:53
3540
修改2019-03-28 10:44:53
举报
文章被收录于专栏:cppcpp
代码语言:javascript
复制
1. Hash
   Dict的实现,冲突链表,当链表load高时,rehash
2. ziplist
   在一块连续内存存放data, data前后各一个字段记录前后data的长度(相当于双向链表),这个长度是可变长编码的;
   优点:没有内存碎片;省去前后指针;
   缺点:在ziplist中间插入数据时,需要把插入位置后面的所有data以此往后挪(深拷贝);
   使用场景:链表数据比较短;节点比较少; 
   所以,Redis里,hset和hmset在节点个数超过512或任意value长度超过512时,转为使用Dict
3. quicklist
   list的实现,普通有序双向链表+ziplist;
   使用ziplist还是因为上面描述的优点;考虑到ziplist的缺点,有一个难题:
   quicklist节点包含多长的ziplist合适? Redis支持根据实际场景配置
4. skiplist: sorted set的实现;
   跳表level根据概率决定;
   优点:对比Hash,skiplist序; 对比平衡树,实现简单, 内存更灵活,时间复杂度相当,范围查询更简单;
   改进skiplist每个节点维护span(指针跨度),从而支持zrevrank、zrevrange;
   sorted set还使用dict, 从而支持zscore;
   当数据较少时,使用ziplist就够了;
参考:http://zhangtielei.com/posts/server.html
                  

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

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