上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要: 压缩列表 当一个列表键只包含少量列表项, 并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redis 就会使用压缩列表(ziplist)来做列表键的底层实现。 当一个哈希键只包含少量键值对, 并且每个键值对的键和值要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redi 阅读全文
posted @ 2023-01-09 17:38 Saturn5 阅读(36) 评论(0) 推荐(0)
摘要: 整数集合 整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。 虽然 intset 结构将 contents 属性声明为 int8_t 类型的数组, 但实际上 contents 数组并不保存 阅读全文
posted @ 2023-01-09 16:46 Saturn5 阅读(23) 评论(0) 推荐(0)
摘要: 跳表 Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员 ( member ) 是比较长的字符串时,Redis 就会使用跳跃表来作为有序集合键的底层实现。 位于图片最左边的是 zskiplist 结构, 该结构包含以下属性: heade 阅读全文
posted @ 2023-01-09 16:20 Saturn5 阅读(37) 评论(0) 推荐(0)
摘要: 字典 字典是数据库和哈希键的底层实现。 拉链的链表头部插入,以解决冲突。 rehash流程: 为字典的 ht[1] 哈希表分配空间, 这个哈希表的空间大小取决于要执行的操作, 以及 ht[0] 当前包含的键值对数量 (也即是ht[0].used 属性的值): 如果执行的是扩展操作, 那么 ht[1] 阅读全文
posted @ 2023-01-09 15:31 Saturn5 阅读(31) 评论(0) 推荐(0)
摘要: 链表 Redis使用的C没有内置链表结构,Redis自己实现了链表 双端:链表节点带有prev和next指针,获取某个节点的前置节点和后置节点的复杂度都是O(1)。 无环:表头节点的prev指针和表尾节点的next指针都指向NULL,对链表的访问以NULL为终点。 带表头指针和表尾指针:通过list 阅读全文
posted @ 2023-01-09 13:34 Saturn5 阅读(22) 评论(0) 推荐(0)
摘要: string string是redis最基本的类型,一个key对应一个value。 采用SDS表示字符串,而非C中的简单字符串,SDS本质是结构体,含有free、len、buf三个字段。 SDS长度增长时空间预分配,增长后长度小于1M时,分配的free和len相等,即增长后的buf大小为增长后的le 阅读全文
posted @ 2023-01-09 13:21 Saturn5 阅读(36) 评论(0) 推荐(0)
摘要: 1. 函数A把切片作为参数传入函数B 由于切片的底层是结构体,这种传参表面是切片引用,本质却是结构体的值传递,因此如果B内部对切片进行重新赋值或扩容,会导致B中切片的底层数组指针变化,而A中的切片还是原来的底层数组。 2. map的value存放结构体 map的value可以直接存放结构体,但是不能 阅读全文
posted @ 2022-10-23 15:13 Saturn5 阅读(48) 评论(0) 推荐(0)
摘要: 平衡二叉树、B树、B+树、红黑树 阅读全文
posted @ 2022-10-22 18:43 Saturn5 阅读(53) 评论(0) 推荐(0)
摘要: bridge,NAT,host-only 阅读全文
posted @ 2022-09-22 11:57 Saturn5 阅读(28) 评论(0) 推荐(0)
摘要: 字符串快速匹配 阅读全文
posted @ 2022-09-21 11:16 Saturn5 阅读(37) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 10 下一页