github.com/hdt3213/godis@v1.2.9/cluster/router.go (about)

     1  package cluster
     2  
     3  import "github.com/hdt3213/godis/interface/redis"
     4  
     5  // CmdLine is alias for [][]byte, represents a command line
     6  type CmdLine = [][]byte
     7  
     8  func makeRouter() map[string]CmdFunc {
     9  	routerMap := make(map[string]CmdFunc)
    10  	routerMap["ping"] = ping
    11  	routerMap["info"] = info
    12  
    13  	routerMap["prepare"] = execPrepare
    14  	routerMap["commit"] = execCommit
    15  	routerMap["rollback"] = execRollback
    16  	routerMap["del"] = Del
    17  
    18  	routerMap["expire"] = defaultFunc
    19  	routerMap["expireat"] = defaultFunc
    20  	routerMap["expiretime"] = defaultFunc
    21  	routerMap["pexpire"] = defaultFunc
    22  	routerMap["pexpireat"] = defaultFunc
    23  	routerMap["pexpiretime"] = defaultFunc
    24  	routerMap["ttl"] = defaultFunc
    25  	routerMap["pttl"] = defaultFunc
    26  	routerMap["persist"] = defaultFunc
    27  	routerMap["exists"] = defaultFunc
    28  	routerMap["type"] = defaultFunc
    29  	routerMap["rename"] = Rename
    30  	routerMap["renamenx"] = RenameNx
    31  	routerMap["copy"] = Copy
    32  
    33  	routerMap["set"] = defaultFunc
    34  	routerMap["setnx"] = defaultFunc
    35  	routerMap["setex"] = defaultFunc
    36  	routerMap["psetex"] = defaultFunc
    37  	routerMap["mset"] = MSet
    38  	routerMap["mget"] = MGet
    39  	routerMap["msetnx"] = MSetNX
    40  	routerMap["get"] = defaultFunc
    41  	routerMap["getex"] = defaultFunc
    42  	routerMap["getset"] = defaultFunc
    43  	routerMap["getdel"] = defaultFunc
    44  	routerMap["incr"] = defaultFunc
    45  	routerMap["incrby"] = defaultFunc
    46  	routerMap["incrbyfloat"] = defaultFunc
    47  	routerMap["decr"] = defaultFunc
    48  	routerMap["decrby"] = defaultFunc
    49  	routerMap["randomkey"] = randomkey
    50  
    51  	routerMap["lpush"] = defaultFunc
    52  	routerMap["lpushx"] = defaultFunc
    53  	routerMap["rpush"] = defaultFunc
    54  	routerMap["rpushx"] = defaultFunc
    55  	routerMap["lpop"] = defaultFunc
    56  	routerMap["rpop"] = defaultFunc
    57  	//routerMap["rpoplpush"] = RPopLPush
    58  	routerMap["lrem"] = defaultFunc
    59  	routerMap["llen"] = defaultFunc
    60  	routerMap["lindex"] = defaultFunc
    61  	routerMap["lset"] = defaultFunc
    62  	routerMap["lrange"] = defaultFunc
    63  
    64  	routerMap["hset"] = defaultFunc
    65  	routerMap["hsetnx"] = defaultFunc
    66  	routerMap["hget"] = defaultFunc
    67  	routerMap["hexists"] = defaultFunc
    68  	routerMap["hdel"] = defaultFunc
    69  	routerMap["hlen"] = defaultFunc
    70  	routerMap["hstrlen"] = defaultFunc
    71  	routerMap["hmget"] = defaultFunc
    72  	routerMap["hmset"] = defaultFunc
    73  	routerMap["hkeys"] = defaultFunc
    74  	routerMap["hvals"] = defaultFunc
    75  	routerMap["hgetall"] = defaultFunc
    76  	routerMap["hincrby"] = defaultFunc
    77  	routerMap["hincrbyfloat"] = defaultFunc
    78  	routerMap["hrandfield"] = defaultFunc
    79  
    80  	routerMap["sadd"] = defaultFunc
    81  	routerMap["sismember"] = defaultFunc
    82  	routerMap["srem"] = defaultFunc
    83  	routerMap["spop"] = defaultFunc
    84  	routerMap["scard"] = defaultFunc
    85  	routerMap["smembers"] = defaultFunc
    86  	routerMap["sinter"] = defaultFunc
    87  	routerMap["sinterstore"] = defaultFunc
    88  	routerMap["sunion"] = defaultFunc
    89  	routerMap["sunionstore"] = defaultFunc
    90  	routerMap["sdiff"] = defaultFunc
    91  	routerMap["sdiffstore"] = defaultFunc
    92  	routerMap["srandmember"] = defaultFunc
    93  
    94  	routerMap["zadd"] = defaultFunc
    95  	routerMap["zscore"] = defaultFunc
    96  	routerMap["zincrby"] = defaultFunc
    97  	routerMap["zrank"] = defaultFunc
    98  	routerMap["zcount"] = defaultFunc
    99  	routerMap["zrevrank"] = defaultFunc
   100  	routerMap["zcard"] = defaultFunc
   101  	routerMap["zrange"] = defaultFunc
   102  	routerMap["zrevrange"] = defaultFunc
   103  	routerMap["zrangebyscore"] = defaultFunc
   104  	routerMap["zrevrangebyscore"] = defaultFunc
   105  	routerMap["zrem"] = defaultFunc
   106  	routerMap["zremrangebyscore"] = defaultFunc
   107  	routerMap["zremrangebyrank"] = defaultFunc
   108  
   109  	routerMap["geoadd"] = defaultFunc
   110  	routerMap["geopos"] = defaultFunc
   111  	routerMap["geodist"] = defaultFunc
   112  	routerMap["geohash"] = defaultFunc
   113  	routerMap["georadius"] = defaultFunc
   114  	routerMap["georadiusbymember"] = defaultFunc
   115  
   116  	routerMap["publish"] = Publish
   117  	routerMap[relayPublish] = onRelayedPublish
   118  	routerMap["subscribe"] = Subscribe
   119  	routerMap["unsubscribe"] = UnSubscribe
   120  
   121  	routerMap["flushdb"] = FlushDB
   122  	routerMap["flushall"] = FlushAll
   123  	routerMap[relayMulti] = execRelayedMulti
   124  	routerMap["getver"] = defaultFunc
   125  	routerMap["watch"] = execWatch
   126  
   127  	return routerMap
   128  }
   129  
   130  // relay command to responsible peer, and return its protocol to client
   131  func defaultFunc(cluster *Cluster, c redis.Connection, args [][]byte) redis.Reply {
   132  	key := string(args[1])
   133  	peer := cluster.peerPicker.PickNode(key)
   134  	return cluster.relay(peer, c, args)
   135  }