refactor command table

This commit is contained in:
hdt3213
2021-05-24 23:17:55 +08:00
parent 68ae54f596
commit f1455534d4
24 changed files with 776 additions and 899 deletions

115
router.go
View File

@@ -1,102 +1,23 @@
package godis
func makeRouter() map[string]cmdFunc {
routerMap := make(map[string]cmdFunc)
routerMap["ping"] = Ping
import "strings"
routerMap["del"] = Del
routerMap["expire"] = Expire
routerMap["expireat"] = ExpireAt
routerMap["pexpire"] = PExpire
routerMap["pexpireat"] = PExpireAt
routerMap["ttl"] = TTL
routerMap["pttl"] = PTTL
routerMap["persist"] = Persist
routerMap["exists"] = Exists
routerMap["type"] = Type
routerMap["rename"] = Rename
routerMap["renamenx"] = RenameNx
var cmdTable = make(map[string]*command)
routerMap["set"] = Set
routerMap["setnx"] = SetNX
routerMap["setex"] = SetEX
routerMap["psetex"] = PSetEX
routerMap["mset"] = MSet
routerMap["mget"] = MGet
routerMap["msetnx"] = MSetNX
routerMap["get"] = Get
routerMap["getset"] = GetSet
routerMap["incr"] = Incr
routerMap["incrby"] = IncrBy
routerMap["incrbyfloat"] = IncrByFloat
routerMap["decr"] = Decr
routerMap["decrby"] = DecrBy
routerMap["lpush"] = LPush
routerMap["lpushx"] = LPushX
routerMap["rpush"] = RPush
routerMap["rpushx"] = RPushX
routerMap["lpop"] = LPop
routerMap["rpop"] = RPop
routerMap["rpoplpush"] = RPopLPush
routerMap["lrem"] = LRem
routerMap["llen"] = LLen
routerMap["lindex"] = LIndex
routerMap["lset"] = LSet
routerMap["lrange"] = LRange
routerMap["hset"] = HSet
routerMap["hsetnx"] = HSetNX
routerMap["hget"] = HGet
routerMap["hexists"] = HExists
routerMap["hdel"] = HDel
routerMap["hlen"] = HLen
routerMap["hmget"] = HMGet
routerMap["hmset"] = HMSet
routerMap["hkeys"] = HKeys
routerMap["hvals"] = HVals
routerMap["hgetall"] = HGetAll
routerMap["hincrby"] = HIncrBy
routerMap["hincrbyfloat"] = HIncrByFloat
routerMap["sadd"] = SAdd
routerMap["sismember"] = SIsMember
routerMap["srem"] = SRem
routerMap["scard"] = SCard
routerMap["smembers"] = SMembers
routerMap["sinter"] = SInter
routerMap["sinterstore"] = SInterStore
routerMap["sunion"] = SUnion
routerMap["sunionstore"] = SUnionStore
routerMap["sdiff"] = SDiff
routerMap["sdiffstore"] = SDiffStore
routerMap["srandmember"] = SRandMember
routerMap["zadd"] = ZAdd
routerMap["zscore"] = ZScore
routerMap["zincrby"] = ZIncrBy
routerMap["zrank"] = ZRank
routerMap["zcount"] = ZCount
routerMap["zrevrank"] = ZRevRank
routerMap["zcard"] = ZCard
routerMap["zrange"] = ZRange
routerMap["zrevrange"] = ZRevRange
routerMap["zrangebyscore"] = ZRangeByScore
routerMap["zrevrangebyscore"] = ZRevRangeByScore
routerMap["zrem"] = ZRem
routerMap["zremrangebyscore"] = ZRemRangeByScore
routerMap["zremrangebyrank"] = ZRemRangeByRank
routerMap["geoadd"] = GeoAdd
routerMap["geopos"] = GeoPos
routerMap["geodist"] = GeoDist
routerMap["geohash"] = GeoHash
routerMap["georadius"] = GeoRadius
routerMap["georadiusbymember"] = GeoRadiusByMember
routerMap["flushdb"] = FlushDB
routerMap["flushall"] = FlushAll
routerMap["keys"] = Keys
return routerMap
type command struct {
executor ExecFunc
prepare PreFunc // return related keys and rollback command
arity int // allow number of args, arity < 0 means len(args) >= -arity
}
// RegisterCommand registers a new command
// arity means allowed number of cmdArgs, arity < 0 means len(args) >= -arity.
// for example: the arity of `get` is 2, `mget` is -2
func RegisterCommand(name string, executor ExecFunc, prepare PreFunc, arity int) {
name = strings.ToLower(name)
cmdTable[name] = &command{
executor: executor,
prepare: prepare,
arity: arity,
}
}