看redis-server源码体会大体流程心得

本文探讨了Redis服务器源码的主要部分,重点在于`main`函数中命令回调函数与CMD的初始化,以及`initServer()`的关键步骤。通过分析`redisCommandTable`,展示了Redis支持的各种命令。接着,详细介绍了`server.el`事件循环的创建,数据库`server.db`的分配,以及监听端口的设置。文章还提到了`acceptTcpHandler`回调函数在处理客户端连接中的作用。最后,说明了服务器如何进入事件循环等待客户端操作,主要通过`aeApiPoll`进行阻塞监控。整体上,本文为理解Redis服务器的工作原理提供了基础指导。
摘要由CSDN通过智能技术生成

首先源码位于redis/src/server.c里面
1.main函数里面首先检查redis-server启动时的启动选项,加载配置项等等.我们最关心的,命令回调函数与CMD的绑定在这里初始化。贴出所有代码
struct redisCommand redisCommandTable[] = {
{“module”,moduleCommand,-2,“as”,0,NULL,0,0,0,0,0},
{“get”,getCommand,2,“rF”,0,NULL,1,1,1,0,0},
{“set”,setCommand,-3,“wm”,0,NULL,1,1,1,0,0},
{“setnx”,setnxCommand,3,“wmF”,0,NULL,1,1,1,0,0},
{“setex”,setexCommand,4,“wm”,0,NULL,1,1,1,0,0},
{“psetex”,psetexCommand,4,“wm”,0,NULL,1,1,1,0,0},
{“append”,appendCommand,3,“wm”,0,NULL,1,1,1,0,0},
{“strlen”,strlenCommand,2,“rF”,0,NULL,1,1,1,0,0},
{“del”,delCommand,-2,“w”,0,NULL,1,-1,1,0,0},
{“unlink”,unlinkCommand,-2,“wF”,0,NULL,1,-1,1,0,0},
{“exists”,existsCommand,-2,“rF”,0,NULL,1,-1,1,0,0},
{“setbit”,setbitCommand,4,“wm”,0,NULL,1,1,1,0,0},
{“getbit”,getbitCommand,3,“rF”,0,NULL,1,1,1,0,0},
{“bitfield”,bitfieldCommand,-2,“wm”,0,NULL,1,1,1,0,0},
{“setrange”,setrangeCommand,4,“wm”,0,NULL,1,1,1,0,0},
{“getrange”,getrangeCommand,4,“r”,0,NULL,1,1,1,0,0},
{“substr”,getrangeCommand,4,“r”,0,NULL,1,1,1,0,0},
{“incr”,incrCommand,2,“wmF”,0,NULL,1,1,1,0,0},
{“decr”,decrCommand,2,“wmF”,0,NULL,1,1,1,0,0},
{“mget”,mgetCommand,-2,“rF”,0,NULL,1,-1,1,0,0},
{“rpush”,rpushCommand,-3,“wmF”,0,NULL,1,1,1,0,0},
{“lpush”,lpushCommand,-3,“wmF”,0,NULL,1,1,1,0,0},
{“rpushx”,rpushxCommand,-3,“wmF”,0,NULL,1,1,1,0,0},
{“lpushx”,lpushxCommand,-3,“wmF”,0,NULL,1,1,1,0,0},
{“linsert”,linsertCommand,5,“wm”,0,NULL,1,1,1,0,0},
{“rpop”,rpopCommand,2,“wF”,0,NULL,1,1,1,0,0},
{“lpop”,lpopCommand,2,“wF”,0,NULL,1,1,1,0,0},
{“brpop”,brpopCommand,-3,“ws”,0,NULL,1,-2,1,0,0},
{“brpoplpush”,brpoplpushCommand,4,“wms”,0,NULL,1,2,1,0,0},
{“blpop”,blpopCommand,-3,“ws”,0,NULL,1,-2,1,0,0},
{“llen”,llenCommand,2,“rF”,0,NULL,1,1,1,0,0},
{“lindex”,lindexCommand,3,“r”,0,NULL,1,1,1,0,0},
{“lset”,lsetCommand,4,“wm”,0,NULL,1,1,1,0,0},
{“lrange”,lrangeCommand,4,“r”,0,NULL,1,1,1,0,0},
{“ltrim”,ltrimCommand,4,“w”,0,NULL,1,1,1,0,0},
{“lrem”,lremCommand,4,“w”,0,NULL,1,1,1,0,0},
{“rpoplpush”,rpoplpushCommand,3,“wm”,0,NULL,1,2,1,0,0},
{“sadd”,saddCommand,-3,“wmF”,0,NULL,1,1,1,0,0},
{“srem”,sremCommand,-3,“wF”,0,NULL,1,1,1,0,0},
{“smove”,smoveCommand,4,“wF”,0,NULL,1,2,1,0,0},
{“sismember”,sismemberCommand,3,“rF”,0,NULL,1,1,1,0,0},
{“scard”,scardCommand,2,“rF”,0,NULL,1,1,1,0,0},
{“spop”,spopCommand,-2,“wRF”,0,NULL,1,1,1,0,0},
{“srandmember”,srandmemberCommand,-2,“rR”,0,NULL,1,1,1,0,0},
{“sinter”,sinterCommand,-2,“rS”,0,NULL,1,-1,1,0,0},
{“sinterstore”,sint

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bruk_spp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值