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

Redis 命令执行过程()

今天我们来了解一下 Redis 命令执行的过程。...在之前的文章中《当 Redis 发生高延迟时,到底发生了什么》我们曾简单的描述了一条命令执行过程,本篇文章展示深入说明一下,加深读者对 Redis 的了解。...启动时监听socket Redis 服务器启动时,会调用 initServer 方法,首先会建立 Redis 自己的事件机制 eventLoop,然后在其注册周期时间事件处理器,最后在所监听的 socket...6 当此服务器是 master 时:aof 持久化失败时,或一次 bgsave 执行错误,且配置 bgsave 参数和 stop_writes_on_bgsave_err;禁止执行命令。...命令都有 } call 方法是 Redis执行命令的通用方法,它会处理通用的执行命令的前置和后续操作。

1.2K00
您找到你想要的搜索结果了吗?
是的
没有找到

Redis 命令执行过程

所以距离 Redis 的单机实现只差最后一步了,就是 Redis 是怎么处理 client 发来的命令并返回结果的,所以我们就仔细讨论一下 Redis 是怎么执行命令的。...阅读这篇文章你将会了解到: Redis 是怎么执行远程客户端发来的命令Redis client(客户端) Redis 是单线程应用,它是如何与多个客户端简历网络链接并处理命令的?...上文的例子中 Redis 就会去字典去查找 SET 这个命令对应的 redisCommand。redis执行 redisCommand 中命令的实现函数。...省略的参数基本涉及 Redis 集群管理的参数,在之后的文章中会继续讲解。...Redis Server (服务端) 上文是从 redisClient 的角度来观察命令执行,文章接下来的部分将会从 Redis 的代码层面,微观的观察 Redis 是怎么实现命令执行的。

1.1K10

Redis 命令执行过程(下)

在上一篇文章中《Redis 命令执行过程()》中,我们首先了解 Redis 命令执行的整体流程,然后细致分析了从 Redis 启动到建立 socket 连接,再到读取 socket 数据到输入缓冲区,...解析命令执行命令等过程的原理和实现细节。...接下来,我们来具体看一下 set 和 get 命令的实现细节和如何将命令结果通过输出缓冲区和 socket 发送给 Redis 客户端。 ?.... // 所有的 redis 命令都有 } ? setCommand 会判断set命令是否携带了nx、xx、ex或者px等可选参数,然后调用setGenericCommand命令。...在所有的 redisCommand 执行的最后,一般都会调用 addReply 方法进行结果返回,我们的分析也来到了 Redis 命令执行的返回数据阶段。

94420

Linux命令执行过程

一.命令分类 Linux命令分为两类,具体为内部命令和外部命令 内部命令: 指shell内部集成的命令,此类命令无需人为安装,开机后自动运行在内存中,命令help查看所有内部命令的详情,如cd、type...命令查看: type查看命令分类,内部命令显示 shell相关信息,外部命令则显示$PATH路径 二.命令执行顺序 命令形态主要分为4类:alias别名命令、内部命令、hash缓存命令和外部命令。...中的命令 4.开启内部命令echo,再次执行echo “welcome to xi’an” 结论:说明内部命令优先于hash缓存命令和外部命令 5.定义别名alias echo=“hostname...”,如果echo 输出是hostname的内容时,则表明alias比内部命令优先 总结:命令执行顺序为alias——内部命令——hash缓存——外部命令 三.命令分类及查找基本命令 1.type command...-l 显示hash缓存 -d 清楚具体缓存命令路径 -r 删除所有命令路径 5.alias 定义别名 ualias取消别名 四.命令执行过程 ls命令执行过程: 下面进行简单分析: 1、shell

4.5K30

Linux命令执行过程

一.命令分类 Linux命令分为两类,具体为内部命令和外部命令 内部命令: 指shell内部集成的命令,此类命令无需人为安装,开机后自动运行在内存中,命令help查看所有内部命令的详情,如cd、type...命令查看: type查看命令分类,内部命令显示 shell相关信息,外部命令则显示$PATH路径 二.命令执行顺序 命令形态主要分为4类:alias别名命令、内部命令、hash缓存命令和外部命令。...中的命令 4.开启内部命令echo,再次执行echo “welcome to xi’an” 结论:说明内部命令优先于hash缓存命令和外部命令 5.定义别名alias echo=“hostname...”,如果echo 输出是hostname的内容时,则表明alias比内部命令优先 总结:命令执行顺序为alias——内部命令——hash缓存——外部命令 三.命令分类及查找基本命令 1.type command...-l 显示hash缓存 -d 清楚具体缓存命令路径 -r 删除所有命令路径 5.alias 定义别名 ualias取消别名 四.命令执行过程 ls命令执行过程: 下面进行简单分析: 1、shell

4.4K30

Redis 优化执行命令的延时

Redis 是单线程的,客户端的命令请求在server中会被排队,按照顺序处理,如果队列长,命令执行结果的响应时间便会长 如果客户端想要快点得到执行结果,可以考虑一下,从发出命令请求到接收到结果,这个过程中有哪些地方可以优化...上图是这个过程的大致流程,从中我们可以找到几个优化方向 (1)减少网络I/O (2)缩短命令队列长度 (3)降低命令执行时间 具体操作建议 (1)用多参数的命令代替单参数的命令 例如 for (1...,一次性的添加这100个元素 下面这几组命令可供参考,在连续多次执行单参数命令时,尽量考虑多参数命令是否可行 (2)管道 管道机制是Redis减少网络耗时的重要方法,通过管道,把多个命令一起发给server...,不必每个命令单独请求,大大减少了网络的消耗 官方文档中给出了一个示例,执行1000次 ping 命令,使用管道后,快了5倍 (3)尽量避免耗时的命令 有些命令是相对耗时的,例如 ZINTERSTORE...,计算多个集合的交集,如果对多个大集合执行命令,计算时间将比较长 这种情况下,需要根据业务需求来考虑,看是否可以在比较空闲的时间段执行此类命令,或者能否保持集合中内容别太多,集合中是否有非必要的元素可以及时清除

2.2K60

走近源码:Redis如何执行命令

读一个客户端的命令 刚刚我们提到了readQueryFromClient函数,从名称就能看出来这个函数是用来从客户端读取命令的。下面来看看函数的具体实现。...然后根据读取的请求生成相应的Redis可以执行命令(包括参数)。不同的请求类型分别调用processInlineBuffer()和processMultibulkBuffer()函数。...如果返回的是C_ERR,则客户端会被销毁(比如执行QUIT命令)。 processCommand()函数会从Redis启动时加载的命令表中查找命令,然后检查命令执行权限。...进行完上面的各种条件判断之后,才可以真正开始调用call()函数执行命令执行命令并返回 call()函数的参数是client类型的,取出cmd成员进行执行。...这对于Redis的持久化来说非常重要,它可以知道这个命令影响了多少个key。命令执行完之后并没有结束,call函数还会做一些其他操作。例如记录日志,写AOF文件,向从节点同步命令等。

56230
领券