近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了. 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initserverconfig(),在这里初始化了redisserver基本的配置信息, 接着调用loadServerConfig(char *filename) 对 server 全局变量重新初始化. 然后是调用daemonize(),实现守护进程,脱离了控制台,是这个进程 成为独立的首领进程 接下来是ini…
近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了. 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initserverconfig(),在这里初始化了redisserver基本的配置信息, 接着调用loadServerConfig(char *filename) 对 server 全局变量重新初始化. 然后是调用daemonize(),实现守护进程,脱离了控制台,是这个进程 成为独立的首领进程 接下来是ini…
之前总结了redis的通讯流程,基本框架,epoll的封装等等,这次介绍下 redis对于select模型的封装 //select 模型 typedef struct aeApiState { //读文件描述符集合,写文件描述符集合 fd_set rfds, wfds; /* We need to have a copy of the fd sets as it's not safe to reuse * FD sets after select(). */ //读写集合的副本 fd_set _…
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数…
演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019)在北京举办.在计算机视觉技术专题,华为云OCR人工智能高级算法工程师王晶分享了"文字识别服务的技术实践.底层框架及应用场景"的主题演讲. 演讲的第一部分,他分享了文字检测和识别的基础知识以及难点和最新进展.第二部分是华为云文字识别服务关键能力.关键技术,以及落地过程中遇到的"坑&…
Redis 底层数据结构 版本:2.9 支持的数据类型: 字符串 散列 列表 集合 有序集合 字符串 Redis 利用原生的 c 字符串进行了一次封装.封装的字符串叫做简单动态字符串:SDS(simple dynamic string) Redis 使用的简单动态字符串比 c 语言原生的字符串有以下优点: 获取字符串长度的复杂度为O(1) 不存在缓存区溢出 修改字符串长度时,不需要频繁分配内存 空间预分配策略 惰性空间策略 二进制安全 二进制安全的意思是,可以将二进制数据使用 SDS 存储,而不…
redis底层数据结构 一.简单动态字符串(SDS) 定义: struct sdshdr{ int len;    //SDS所保存的字符串长度 int free //记录buf数组中为使用的字节数量,预留内存长度 char buf[] //字节数组,用于保存字符串 } SDS与C字符串的区别及特点: 1)获取字符串长度: C字符串:遍历整个字符串,直至遇到结束符为止,复杂度为O(n). SDS:在len中记录了本身的长度,所以获取一个SDS长度的复杂度为O(1). 2)杜绝缓存区溢出 C字符串…
说明 用于分析redis底层数据结构以及内存情况 底层数据结构分析 1.查看key键的对象类型type key 本地:>sadd test1 本地:>type test1 set 2.查看key键对应redi对象类型的数据结构 sadd test1 本地:>ct encoding test1 intset 本地:>sadd test1 f 本地:>object encoding test1 hashtable 3.查看对应key值的引用计数(被共享而不是重复创建) 1919a…
redis有五种数据类型string.list.hash.set.zset(字符串.哈希.列表.集合.有序集合)并且自实现了简单动态字符串.双端链表.字典.压缩列表.整数集合.跳跃表等数据结构.redis底层使用了多种数据结构来实现各种特性.对于Redis底层实现的了解,可以让我们对Redis工作原理更加清晰. 那么redis数据结构与内部编码,如下图: redis对象(redisObject) redis源码内部是有一个redisObject对象,redis的键值都是redisObject对象…
Redis底层函数详解 serverCron 函数 它负责管理服务器的资源,并维持服务器的正常运行.在执行 serverCron 函数的过程中会调用相关的子函数,如 trackOperationsPerSecond.SigtermHandler.clientsCron.databasesCron 等函数.默认情况下,每隔 100 毫秒执行一次 serverCron 函数 trackOperationsPerSecond 函数 是 serverCron 函数的一个子函数.采用抽样计算的方式,计算并…