![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 53
redis项目经验,学习笔记
HTslide
这个作者很懒,什么都没留下…
展开
-
redis内存回收及共享笔记
redis采用的是引用计数的方式来标记对象的引用状态,当被创建时,refcount被初始化为1,当对象被一个新程序引用时,refcount增加一,当不再被一个程序引用时就减少一,当refcount=0时,则对象占用过的内存会被释放,对象的生命周期包含三个阶段,创建对象,操作对象,释放对象;之所以说被一个新程序引用时,是因为redis中对象是可以共享的,如果一个程序A已经创建了对象a,那么如果有新的程序B要创建一个一样的对象a,则会让B的键的值指针指向a,从而达到共享内存,节约空间的作用,此时a的refc.原创 2021-01-24 13:44:12 · 225 阅读 · 0 评论 -
redis对象编码笔记
redis通过encoding属性来设定对象使用的编码,而不是特定的指定某一个类型的对象固定一个编码,可以提高redis的灵活性和效率。1、字符串对象字符串对象有int,raw,embstr三种编码,编码会根据字符串类型和长度来改变,且可以配置这个长度如果是整数值,则用long类型,使用int编码如果是字符串值,且长度大于32个字节,则使用raw编码如果是字符串值,且长度小于等于32个字节时,使用embstr编码二、列表对象列表对象有zipList和linkedList两种编码,当列表.原创 2021-01-21 19:05:53 · 147 阅读 · 0 评论 -
压缩表笔记
压缩表的结构zlbytes 表示整个压缩表占用的内存字节大小zltail 指向压缩列表的尾节点的指针zllen 压缩列表的节点数量entryX 压缩列表的节点们zlend 压缩列表末端的标记(压缩列表是由特殊编码的连续内存块顺序组成的)压缩表节点的结构如下previous_entry_length 表示前一个节点的字节长度encoding 表示当前节点数据的编码以及数据类型和长度content 表示存储的内容注意:如果前一个节点的字节长度小于254..原创 2023-03-07 15:59:22 · 134 阅读 · 0 评论 -
跳跃表笔记
在redis中,有序集合zset使用了跳跃表,此外,集群节点中的内部数据结构也使用到了跳跃表跳跃表支持最快O(logN),最慢O(N)的查询时间复杂度原创 2023-03-07 15:41:31 · 96 阅读 · 0 评论 -
字典-键值对
哈希表节点的结构key 键value 值 值可以为一个指针,也可以是一个uint-64的整数,或者是一个int-64的整数。next是指向下一个哈希节点的指针,发生键冲突的时候,采用链地址法来解决冲突,类似于Java中的hashMap。哈希表的结构table是一个哈希节点组成的数组size为数组的大小sizemask是数组的最大索引值used为数组中已有数据节点的数量以下是一个哈希表的结构redis中字典的结构字典类型dictType和..原创 2023-03-06 18:08:28 · 748 阅读 · 0 评论 -
sds笔记
结构free // 空余空间len //已使用空间char buf[] //数据buf[] 数组中,存放的数据会在最后以空字符结尾free len都不计算数据中的最后一个空字符,这是redis为了使用c的一些api而保留的c的风格记录free和len一方面可以很快的返回len,不必每次都遍历数组长度,减少strlen这类api的时间复杂度。其次,还可以在对字符串进行写操作时,通过判断free和len来确认扩缩容,防止内存泄漏和内存溢出。再者,扩缩容时,会根据总大...原创 2023-03-06 16:02:07 · 110 阅读 · 0 评论