搜索结果
查询Tags标签: sds,共有 65条记录-
Redis源码阅读(一) SDS简单动态字符串
tag: #Redis #源码阅读 #数据结构 代码链接: https://github.com/redis/redis/blob/unstable/src/sds.h https://github.com/redis/redis/blob/unstable/src/sds.c 数据结构 sds的定义 sds定义是一个char* 类型指针的别名, 我们在传递sds的时候实质上就是传递的C风格字符串…
2022/8/3 2:22:58 人评论 次浏览 -
redis字符串
1 Redis 字符串 1.1 介绍 redis 中以一种叫 sds(simple dynamic string) 的结构来存储字符串。相比传统的C字符串,sds 有以下优点:以o(1)获取字符串长度 是二进制安全的 修改字符串可以有效减少内存重新分配的次数1.2 原理 1.2.1 sds 结构 sds 在 redis 中由一个结构…
2022/7/21 2:24:49 人评论 次浏览 -
Redis设计与实现——数据结构与对象
数据结构 由于C语言内置的数据结构匮乏,Redis实现了一些自己的数据结构。 我们需要分清数据结构和Redis数据类型的区别:数据结构就只是按照某种结构组织起来的数据,Redis会在很多地方复用它 Redis数据类型指的是面向Redis用户提供的类型,即:string、hash、zset、list…
2022/6/29 2:20:21 人评论 次浏览 -
透过Redis源码探究字符串的实现
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的Redis 5.0源码概述 最近在通过 Redis 学 C 语言,不得不说,Redis的代码写的真的工整。这篇文章会比较全面的深入的讲解了Redis数据结构字符串的源码实现,希望大家能够从中学到点…
2022/6/19 2:20:15 人评论 次浏览 -
Redis系列:深刻理解高性能Redis的本质
1 背景 分布式系统绕不开的核心之一的就是数据缓存,有了缓存的支撑,系统的整体吞吐量会有很大的提升。通过使用缓存,我们把频繁查询的数据由磁盘调度到缓存中,保证数据的高效率读写。 当然,除了在内存内运行还远远不够,我们今天就以具有代表性的缓存中间件Redis为例…
2022/5/22 10:52:45 人评论 次浏览 -
redis数据结构(二)字符串类型底层的数据结构
为什么需要SDS 字符串数据类型作为redis最基础的数据类型之一在redis中使用的也是最频繁的数据类型. 因为redis只有一个线程在执行指令,如果某一个指令执行时间过长其他指令都会排队等候,又因为在c语言中获取字符串长度的时间复杂度为O(n),并且每次在字符串扩容或者缩容的…
2022/3/29 2:52:39 人评论 次浏览 -
redis 内存模型和数据结构
前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优…
2022/3/10 19:16:25 人评论 次浏览 -
Redis SDS 数据结构
redis SDS 3.0 len 已经使用空间长度free 未使用空间长度char[] buf 字符数组,保存数据,末尾和c语言字符串一样添加‘\0’ 1.空间预分配 当数据小于1MB时,扩展数据,这个时候buf数组会产生一个和len长度一样的free空间, buf占用空间为 len + free + 1例如:redis buf占…
2022/3/3 19:16:14 人评论 次浏览 -
redis源码之基础组件实现
1 简单动态字符串实现 redis实现了SDS(simple dynamic string)功能,可以在支持C语言的字符串功能的同时,进行进一步的性能和安全性提升来满足数据库的需求。 数据结构如下: struct __attribute__ ((__packed__)) sdshdr64 {uint64_t len; /* 使用长度*/uint64_t allo…
2022/2/21 2:31:42 人评论 次浏览 -
Redis 底层数据结构的实现原理是什么?
https://www.zhihu.com/question/484626962Redis面试中经常被问到,Redis效率为什么这么快,很多同学往往回答:① Redis基于内存操作;② Redis是单线程的,采用了IO多路复用技术; 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数…
2022/2/11 2:12:46 人评论 次浏览 -
为什么 Redis 的查询很快, Redis 如何保证查询的高效
Redis 如何保证高效的查询效率为什么 Redis 比较快 Redis 中的数据结构1、简单动态字符串SDS 对比 c 字符串的优势 SDS可以常数级别获取字符串的长度 杜绝缓冲区溢出 减少修改字符串时带来的内存分配次数 二进制安全 兼容部分C字符串函数2、链表 3、字典 4、跳表 5、整数数…
2022/1/24 19:06:07 人评论 次浏览 -
漫话Redis源码之六十六
这里主要是generic分配,功能比较直白。 /* Defrag helper for generic allocations.** returns NULL in case the allocation wasnt moved.* when it returns a non-null value, the old pointer was already released* and should NOT be accessed. */ void* activeDefr…
2022/1/24 2:04:15 人评论 次浏览 -
redis-string
redis的String类型有多少种编码?[面试7.0]有3种: int: 字符串可以被转化为long型时(即long型整数),Redis就将其编码为int类型,因为long占8个字节是固定的,从而避免开辟内存空间带来的消耗,而long,doulbe型的浮点数是采用字符串保存的 int类型在append字符串时会转化为字…
2022/1/23 19:34:15 人评论 次浏览 -
Redis中String数据类型的SDS设计精妙
Redis中String数据类型的SDS设计精妙SDS(Simple Dynamic String)有5种自动内存对齐的结构体(sdshdr5, sdshdr8, sdshdr16, sdshdr32, sdshdr64),用于实现动态字符串(根据char *字符串长度选择最小的一种结构体),其中sdshdr5结构体仅用来直接读取flags,其余四种结…
2022/1/8 19:04:36 人评论 次浏览 -
Redis中String数据类型的SDS设计精妙
Redis中String数据类型的SDS设计精妙SDS(Simple Dynamic String)有5种自动内存对齐的结构体(sdshdr5, sdshdr8, sdshdr16, sdshdr32, sdshdr64),用于实现动态字符串(根据char *字符串长度选择最小的一种结构体),其中sdshdr5结构体仅用来直接读取flags,其余四种结…
2022/1/8 19:04:36 人评论 次浏览