免费申请网站空间教学网站开发背景
news/
2025/9/29 21:03:42/
文章来源:
免费申请网站空间,教学网站开发背景,网站备案系统验证码出错的解决方案,图库素材网站目录 1. 数据结构1-1. 动态字符串#xff08;SDS#xff09;1-2. intset1-3. Dict 2. 网络模型3. 通信协议4. 内存策略 1. 数据结构
1-1. 动态字符串#xff08;SDS#xff09;
我们都知道Redis中保存的Key是字符串#xff0c;value往往是字符串或者字符串的集合。可见字… 目录 1. 数据结构1-1. 动态字符串SDS1-2. intset1-3. Dict 2. 网络模型3. 通信协议4. 内存策略 1. 数据结构
1-1. 动态字符串SDS
我们都知道Redis中保存的Key是字符串value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。
不过Redis没有直接使用C语言中的字符串因为C语言字符串存在很多问题
获取字符串长度的需要通过运算非二进制安全不可修改
Redis构建了一种新的字符串结构称为简单动态字符串Simple Dynamic String简称SDS。
Redis是C语言实现的其中SDS是一个结构体源码如下 相比于C语言字符串的优点
获取字符串长度的时间复杂度为O(1)支持动态扩容减少内存分配次数二进制安全
1-2. intset
IntSet是Redis中set集合的一种实现方式基于整数数组来实现并且具备长度可变、有序等特征。
结构如下 其中的encoding包含三种模式表示存储的整数大小不同 Intset可以看做是特殊的整数数组具备一些特点
Redis会确保Intset中的元素唯一、有序具备类型升级机制可以节省内存空间底层采用二分查找方式来查询
1-3. Dict
我们知道Redis是一个键值型Key-Value Pair的数据库我们可以根据键实现快速的增删改查。而键与值的映射关系正是通过Dict来实现的。
Dict由三部分组成分别是哈希表DictHashTable、哈希节点DictEntry、字典Dict
Dict的结构
类似java的HashTable底层是数组加链表来解决哈希冲突Dict包含两个哈希表ht[0]平常用ht[1]用来rehash
Dict的伸缩
当LoadFactor大于5或者LoadFactor大于1并且没有子进程任务时Dict扩容当LoadFactor小于0.1时Dict收缩扩容大小为第一个大于等于used 1的2^n收缩大小为第一个大于等于used 的2^nDict采用渐进式rehash每次访问Dict时执行一次rehashrehash时ht[0]只减不增新增操作只在ht[1]执行其它操作在两个哈希表
2. 网络模型
3. 通信协议
4. 内存策略
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922252.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!