首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis源码哪里读起?

其中也有人问起阅读Redis源码的方法。本文我们就集中讨论这样一个话题:如果你现在想阅读Redis源码,那么从哪里入手?算是对之前系列文章的一个补充。...这样我们就可以先从外部观察,尝试执行一些命令,了解了这些命令执行的外部表现之后,再钻进去看对应的源码是如何实现的。要想读懂这些代码,首先我们需要理解Redis的事件机制。...注:本文的分析基于Redis源码的5.0分支。 初始化流程和事件循环概述 Redis源码的main函数源文件server.c中。...要顺利读懂Redis源码,需要掌握一些Linux下进行C语言编程的经验,也需要掌握一些Linux系统层面的知识。对于很多人来说,这些可能会是一种障碍。...祝源码阅读愉快!

7.8K102

MySQL内存到底消耗在哪里

MySQL内存到底消耗在哪里? 一说起MySQL使用的内存,你可能会想到各种buffer,最著名的莫过于innodb buffer pool了,它是内存使用的大户,还有sort buffer等等。...innodb_additional_mem_pool_size: 额外缓存池,MySQL8.0已经废弃 key_buffer_size: MyISAM缓存索引块的内存大小。...从公式中不难看出,当基础配置不变情况下,连接数很多的时候,MySQL占用的内存数据,就会上涨的比较快。...02 performance_schema维度分析 Performance_schema特性可以监控MySQL的运行指标,通常情况下,默认是开启的,开启时候,会带来10%左右的MySQL性能损耗...可以PS数据库中使用下面的SQL进行内存使用情况查询: select substring_index(event_name,'/',2) as code_area, sys.format_bytes(

2.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    字符串JVM的哪里

    关于字符串JVM的哪里 字符串对象JVM中可能有两个存放的位置:字符串常量池或堆内存。...提供了一个API, java.lang.String.intern(),这个API可以手动将一个字符串对象的值转移到字符串常量池中 JDK1.7之后虽然字符串常量池也转换到了堆中,但是其实字符串常量池是堆中独立开辟的空间...,我们创建一个普通字符串和一个字符串对象结构类似于下图 代码验证 这里其实我们可以看出一些intern()的特性了. intern源码分析 我们来看intern方法的实现,intern方法的底层是一个...native方法,Hotspot JVM里字符串常量池它的逻辑注释里写得很清楚....总结 Java应用恰当得使用String.intern()方法有助于节省内存空间,但是使用的时候,也需要注意,因为StringTable的大小是固定的,如果常量池中的字符串过多,会影响程序运行效率。

    4.3K30

    MYSQL 8 show processlist 到底信息从哪里来,换到哪里了,怎么打开,哪里有进步?

    放假的最后一天,的回答最近有一个小朋友问了一个关于 processlist 的问题,基于MYSQL 8 show processlist 到底从哪里来的信息,MYSQL 8 中提供processlist...MYSQL 8.022 之前获取这些信息是需要根据线程管理模块通过全局互斥的方式来获得数据。...MYSQL 8.022 版本后,MYSQL 可以通过另一个方式来获得这些信息,performance_schema 中获得这个信息,结果与show processlist 与 select* from...thread 运行中的信息都已经获得,基于MYSQL 8 获取 show processlist 信息的方式可以改变了,不在使用原有的方式获得信息。...那么的说说为什么MYSQL 8 中不在建议使用原有的方式来获得系统的信息。

    2.1K20

    mysql慢查询日志默认在哪里_MySQL 慢查询日志

    慢查询日志概念 MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中查询响应时间超过阈值的语句,具体指响应时间超过 long_query_time 值的 SQL,会被记录到慢查询日志...默 认情况下,MySQL 是不开启慢查询日志的,需要我们手动设置这个参数值,当然,如果不是调优需要的话,一般不建议开启慢查询日志, 因为开启慢查询日志或多或少会带来一定性能的影响。...慢查询日志参数 slow_query_log:表示是否开启慢查询日志,OFF表示禁用,ON表示开启 slow_query_log_file:MySQL 慢查询日志存储路径。...MySQL 同时支持两种日志存储方式,配置的时候以逗号分隔开,如:log_output=’FILE,TABLE’。...long_query_time 值 执行修改操作之后,需要重新连接或打开一个会话才能看到修改的值 或者 使用 show global variable like ‘%long_query_time%’ 查看 我们来测试一下,

    4.5K20

    《一起读 kubernetes 源码》pause 你在哪里

    源码分析 当你想要你 k8s 的源码中寻找 pause 的时候,你就会发现,你能找到一些蛛丝马迹,但是毫无头绪,一开始我也是的,我源码中搜索了所有有关 pause 的内容,发现并没有看到真正创建这个容器的地方...(此时我还没懂 pause 的原理)于是乎,我回头弄清楚的原理(先原理再源码),发现 pause 的作用是共享命名空间,那么它的创建一定是 pod 创建的比较前面步骤,至少要在其他容器创建之前。...于是我带着目标去追源码 createPodSandbox 这个方法就是 SyncPod 里面的第 4 步骤: // pkg/kubelet/kuberuntime/kuberuntime_sandbox.go...ARCH ADD bin/pause-linux-${ARCH} /pause USER 65535:65535 ENTRYPOINT ["/pause"] 这个二进制的源码 kubernetes/...遇到一些外部调用和扩展的时候也不用慌张,努力去发现一些蛛丝马迹,结合已有的知识点大胆假设,小心求证,你总能在源码中找到属于你的真相。

    19010

    性能超过MySQL的MariaDB到底强在哪里

    p=5151 近年来,不少程序员吹捧MariaDB,抛弃MySQL。本文总结了一些 MariaDB强过MySQL的地方,分享给大家! ?...MySQL的发展史 MySQL的历史可以追溯到1979年,它的创始人叫作Michael Widenius,他开发一个报表工具的时候,设计了一套API,后来他的客户要求他的API支持sql语句,他直接借助于...在此之前,Oracle2005年就收购了InnoDB,因此,InnoDB一直以来都只能作为第三方插件供用户选择。...MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。...存储引擎方面,使用XtraDB来代替MySQL的InnoDB。MariaDB由MySQL的创始人Michael Widenius主导,由开源社区的大神们进行开发。

    2.5K20

    MySQL源码目录

    MySQL源码目录 今天一天没怎么干正事儿,就简单聊聊mysql源码目录中每个文件夹里面的内容吧,因为回家比较早,所以就在笔记本的window平台下截了一张mysql源码的目录图,如下: ?...用于解析binlog的一些lib服务,5.7版本新增 libmysql: 用来创建嵌入式系统的mysql客户端程序API libmysqld: MySQL服务器的核心级API文件,也用来开发嵌入式系统...mysql-test: mysqld的测试小工具 mysys: mysql自己实现的一些常用数据结构和算法。...regex: 一些关于正则表达式的算法实现 scripts: 包含一些系统工具脚本,比如mysql_installed_db、mysqld_safe等 sql: mysql服务器的主要代码,包含了...单元测试文件 vio: 虚拟网络IO处理系统,是对不同协议或者不同平台的网络通信API的封装 win: windows环境编译的一些文件和说明 zlib: zlib压缩算法库

    3.1K21

    MYSQL 8 日志系统到底比MYSQL 5.X 好在哪里

    实际上MYSQL 5.x的日志系统存在两个问题,导致一些性能问题,尤其高并发写入和对数据修改的情况下,其中的瓶颈的问题在于两个瓶颈, 当多线程访问数据落入到 log_buffer 的情况下,还是需要获取锁让写入有顺序性..., 同时获取redo已经将数据页面写入后,也会在log_buffer中将写入到日志中的顺序进行一个重排,这也是需要有顺序性. ?...为什么MYSQL 8 要解决这个问题,主要的原因是多CPU MYSQL中的使用越来越被支持,而瓶颈在于并发和顺序之间的矛盾....MYSQL 8 解决关于锁的问题,采用了另一种方式,因为记录必须有顺序性,而不在增加锁,则顺序性如何完成, 这里MYSQL 8 采用的方式是预留空间的方式来对还未写的日志预留空间,然后 ?...整体将MYSQL 8 相关的改进过了一遍后, 发现以下几个问题 1 有锁的设计相对简单,但有锁的设计并发性差 2 无锁的设计复杂,其中,中间段是优化的方面,将原来有序的写入,变为了无序的写入,加大了由于顺序

    1.5K30

    怎么学习MySQL源码

    学习MySQL源码是一个深入理解数据库工作原理和提高编程技能的过程。由于MySQL是一个庞大且复杂的系统,这个过程可能会相当具有挑战性。...下载和编译源码 访问MySQL的官方网站或其GitHub的仓库,下载源码。 遵循官方文档中的说明来编译源码。确保您可以本地环境中编译并运行MySQL。 3....阅读开发文档:MySQL源码中通常包含大量的注释和文档,这些是理解代码的重要资源。 5. 修改和实验 小范围修改:尝试修改源码中的一小部分,例如添加日志,了解其工作流程。...学习资源 官方文档:MySQL的官方文档是学习数据库内部工作机制的宝贵资源。 书籍:寻找关于MySQL内部工作原理的书籍,如《高性能MySQL》。 在线资源:查找专门解释MySQL源码的博客和文章。...实际项目 尝试参与一些实际的MySQL相关项目,这可以帮助你更好地理解源码实际中的应用。 注意事项 耐心:理解如此庞大的代码库需要时间和耐心。 循序渐进:逐渐深入,不要一开始就试图理解所有内容。

    39710

    MySQL MHA源码解析

    MySQL的高可用方案很多,MHA算是其中最流行的一种方案之一。目前最新的版本是0.57,它分为两部分,一部分水himanager,另外一部分是node....了解学习一个开源项目,阅读源码是一个很不错的开始,所以MHA就成为了我学习的一个重点内容。...整个工程的情况如下,bin目录下是可执行的perl脚本,引用的包体逻辑lib下面的.pm文件中。 ?...如果是IDE里面就很容易看到对应的.pm文件MasterMonitor.pm的一个结构概览,从main方法入手。 ? 整个Monitor的核心逻辑就是下面的方法了。...通过上面的部分可以看到,整个切换的过程中,后台会进行一些列的逻辑检查,比如查到当前最新的slave节点,如何补齐日志信息(本质上就是通过mysqlbinlog基于时间戳来处理) 在这个基础上,通过源码我们可以看到很多不曾注意的细节

    1.6K90
    领券