首先源码位于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
看redis-server源码体会大体流程心得
最新推荐文章于 2023-06-08 23:28:32 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)