def dataReceived(self, rcvdata): cmd_count = 0 r = fakeredis.FakeStrictRedis() cmd_count += 1 data = redis_protocol.decode(rcvdata) # data类型:list command = " ".join(redis_protocol.decode(rcvdata)) # command类型:string # print str(command) logger = JsonLog() logger.get_log(command, self.transport.getPeer().host, self.transport.getPeer().port) if data[0] in self.command: if data[0].lower() == "quit": self.transport.loseConnection() elif data[0].lower() == "ping": self.transport.write("+PONG\r\n") elif data[0].lower() == "info": diff = round(time.time() - time_elapse) % 60 self.transport.write( RedisCommands.parse_info(diff, self.connectionNb, cmd_count)) elif data[0].lower() == "save" or data[0].lower( ) == "flushall" or data[0].lower() == "flushdb": self.transport.write("+OK\r\n") else: if command.lower().startswith('config get') and len(data) == 3: s = RedisCommands.parse_config(data[2]) self.transport.write(s) elif command.lower().startswith('config set') and len( data) == 4: flag = RedisCommands.set_config(data[2], data[3]) if flag: self.transport.write("+OK\r\n") else: self.transport.write( "-(error) ERR Unsupported CONFIG parameter: {0}". format(data[2])) elif data[0].lower() == "set" and len(data) == 3: if r.set(data[1], data[2]): self.transport.write("+OK\r\n") elif data[0].lower().startswith('del') and len(data) == 2: if r.delete(data[1]): self.transport.write("+(integer) 1\r\n") elif command.lower().startswith('get') and len(data) == 2: if r.get(data[1]): s = r.get(data[1]) self.transport.write("+{0}\r\n".format(s)) elif command.lower().startswith('keys') and len(data) == 2: if r.keys() and (data[1] in r.keys() or data[1] == '*'): keys = r.keys() self.transport.write(RedisCommands.encode_keys(keys)) elif len(r.keys()) == 0: self.transport.write("+(empty list or set)\r\n") else: self.transport.write( "-ERR wrong number of arguments for '{0}' command\r\n". format(data[0])) else: self.transport.write("-ERR unknown command '{0}'\r\n".format( data[0]))
def dataReceived(self, chunk): log.msg("Server: %d bytes received" % len(chunk)) command = redis_protocol.decode(chunk)[0] log.msg("command: %s" % command) if command.lower() in readOnlyCommands: slave_cli_queue = self.iter_slave_cli_queues.next() slave_cli_queue.put(chunk) else: self.master_cli_queue.put(chunk)
def dataReceived(self, rcvdata): cmd_count = 0 r = fakeredis.FakeStrictRedis() cmd_count = cmd_count + 1 print "original data:"+str(rcvdata), #print "Data received:", str(redis_protocol.decode(rcvdata)) try: data=redis_protocol.decode(rcvdata) command=" ".join(redis_protocol.decode(rcvdata)) print str(command) except: data=rcvdata command=rcvdata if command.lower == "quit": self.transport.loseConnection() else: if command.lower() == "ping" or rcvdata.find('PING') == 0: snddata = "+PONG\r\n" #redis_protocol.encode("PONG crime") #print redis_protocol.encode("PONG") self.transport.write(snddata) elif command.lower() == "config get *" or rcvdata.find('config')==0: self.transport.write(rediscommands.parse_config()) elif command.lower().startswith('set') and len(data) == 3: if r.set(data[1],data[2]): self.transport.write("+OK\r\n") elif command.lower().startswith('get') and (len(data) == 2 or len(data) == 1): if r.get(data[1]): s=r.get(data[1]) self.transport.write('+"%s"\r\n'%(s)) elif command.lower().startswith('info'): diff = round(time.time() - time_elapse) % 60 self.transport.write(rediscommands.parse_info(diff,self.connectionNb,cmd_count)) elif command.lower().startswith('keys') and (len(data) == 2 or len(data) == 1): if r.keys() and (data[1] in r.keys() or data[1] == '*') : keys=r.keys() self.transport.write(rediscommands.encode_keys(keys)) elif len(r.keys()) == 0: self.transport.write("+(empty list or set)\r\n") else: self.transport.write("-ERR wrong number of arguments for 'keys' command\r\n") else: self.transport.write("-ERR unknown command '%s'\r\n"%(data[0]))
def test_none_response(self): eq_(decode("*3\r\n$3\r\nfoo\r\n$-1\r\n$3\r\nbar\r\n"), ["foo", None, "bar"])
def test_none(self): eq_(decode("$-1\r\n"), None)
def test_response(self): eq_(decode("$6\r\nfoobar\r\n"), "foobar")
def test_set(self): eq_(decode("*3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n"), ['SET', 'mykey', 'myvalue'])
def test_ping(self): eq_(decode("*1\r\n$4\r\nping"), ["ping"]) eq_(decode(encode("ping")), ["ping"])