Example #1
0
    async def SPOP(self, count):
        if count == 0 or count > 2:
            return Resp.error('wrong number of arguments for SPOP command')

        key = await self.get_key()

        if count == 1:
            return Resp.encode(self.db.spop(key), '$')

        try:
            count = int(await self.get_key())
        except ValueError:
            return Resp.error('value is not an integer')
        ret = [self.db.spop(key) for _ in range(count)]

        return Resp.encode(ret)
Example #2
0
    async def SMEMBERS(self, count):
        if count != 1:
            return Resp.error('wrong number of arguments for SMEMBERS command')

        key = await self.get_key()

        return Resp.encode(self.db.smembers(key))
Example #3
0
    async def HMGET(self, count, opt='*'):
        if count < 2:
            return Resp.error('wrong number of arguments for HMGET command')
        key = await self.get_key()

        fields = [await self.get_key() for _ in range(count - 1)]

        return Resp.encode(self.db.hget(key, *fields), opt)
Example #4
0
    async def RPUSH(self, count):
        if count < 2:
            return Resp.error('wrong number of arguments for RPUSH command')
        key = await self.get_key()

        values = [await self.get_key() for _ in range(count - 1)]

        return Resp.encode(self.db.rpush(key, values))
Example #5
0
    async def SREM(self, count):
        if count < 2:
            return Resp.error('wrong number of arguments for REM command')

        key = await self.get_key()

        values = {await self.get_key() for _ in range(count - 1)}

        return Resp.encode(self.db.srem(key, values))
Example #6
0
    async def SADD(self, count):
        if count < 2:
            return Resp.error('wrong number of arguments for SADD command')

        key = await self.get_key()

        members = [await self.get_key() for _ in range(count - 1)]

        return Resp.encode(self.db.sadd(key, members))
Example #7
0
    async def MGET(self, count, opt='*'):
        if count < 1:
            return Resp.error('wrong number of arguments for MGET command')

        keys = [await self.get_key() for _ in range(count)]

        m = True if opt == '*' else False

        return Resp.encode(self.db.get(m, *keys), opt)
Example #8
0
    async def HGETALL(self, count):
        if count != 1:
            return Resp.error('wrong number of arguments for HGETALL command')
        key = await self.get_key()

        info = []
        for k, v in self.db.hgetall(key):
            info.append(k)
            info.append(v)
        return Resp.encode(info)
Example #9
0
    async def LINDEX(self, count):
        if count != 2:
            return Resp.error('wrong number of arguments for LLEN command')

        key = await self.get_key()
        index = await self.get_key()

        try:
            index = int(index)
        except ValueError:
            return Resp.error('value is not an integer')
        return Resp.encode(self.db.lindex(key, index), '$')
Example #10
0
    async def HMSET(self, count):
        count -= 1
        if count % 2:
            return Resp.error('ERR wrong number of arguments for HMSET')

        key = await self.get_key()

        mapping = await self.get_key_value(count // 2)

        if len(mapping) == count // 2:
            return Resp.encode(self.db.hset(key, **mapping))

        return Resp.error('fail')
Example #11
0
    async def LSET(self, count):
        if count != 3:
            return Resp.error('wrong number of arguments for LSET command')

        key = await self.get_key()
        index = await self.get_key()

        try:
            index = int(index)
        except ValueError:
            return Resp.error('value is not an integer')

        value = await self.get_key()

        ret = self.db.lset(key, index, value)

        if ret == 0:
            return Resp.ok()
        if ret == 1:
            return Resp.error('index out of range')
        if ret == -1:
            return Resp.encode(False)
Example #12
0
 async def SCARD(self, count):
     if count != 1:
         return Resp.error('wrong number of arguments for SCARD command')
     key = await self.get_key()
     return Resp.encode(self.db.scard(key))
Example #13
0
 async def LLEN(self, count):
     if count != 1:
         return Resp.error('wrong number of arguments for LLEN command')
     key = await self.get_key()
     return Resp.encode(self.db.llen(key))
Example #14
0
 async def RPOP(self, count):
     if count != 1:
         return Resp.error('wrong number of arguments for RPOP command')
     key = await self.get_key()
     return Resp.encode(self.db.rpop(key), '$')
Example #15
0
 async def HKEYS(self, count):
     if count != 1:
         return Resp.error('wrong number of arguments for HKEYS command')
     key = await self.get_key()
     return Resp.encode(self.db.hkeys(key))
Example #16
0
 async def KEYS(self, count):
     if count != 1:
         return Resp.error('wrong number of arguments for KEYS command')
     pattern = await self.get_key()
     return Resp.encode(self.db.keys(pattern))