Beispiel #1
0
 def _incrdecr(self, cmd, key, delta):
     memcache.check_key(key)
     server, key = self._get_server(key)
     if not server:
         yield 0
     self._statlog(cmd)
     cmd = "%s %s %d" % (cmd, key, delta)
     try:
         yield server.send_cmd(cmd)
         line = yield server.readline()
         yield int(line)
     except socket.error, msg:
         if isinstance(msg, tuple): msg = msg[1]
         server.mark_dead(msg)
         yield None
Beispiel #2
0
    def _set(self, cmd, key, val, time, min_compress_len = 0):
        memcache.check_key(key)
        server, key = self._get_server(key)
        if not server:
            yield 0

        self._statlog(cmd)

        store_info = self._val_to_store_info(val, min_compress_len)
        if not store_info: yield 0

        fullcmd = "%s %s %d %d %d\r\n%s" % (cmd, key, store_info[0], time, store_info[1], store_info[2])
        try:
            yield server.send_cmd(fullcmd)
            yield ((yield server.expect("STORED")) == "STORED")
        except socket.error, msg:
            if isinstance(msg, tuple): msg = msg[1]
            server.mark_dead(msg)
Beispiel #3
0
    def get(self, key):
        '''Retrieves a key from the memcache.

        @return: The value or None.
        '''
        memcache.check_key(key)
        server, key = self._get_server(key)
        if not server:
            yield None

        self._statlog('get')

        try:
            yield server.send_cmd("get %s" % key)
            rkey, flags, rlen, = yield self._expectvalue(server)
            if not rkey:
                yield None
            value = yield self._recv_value(server, flags, rlen)
            yield server.expect("END")
        except (memcache._Error, socket.error), msg:
            if isinstance(msg, tuple): msg = msg[1]
            server.mark_dead(msg)
            yield None
Beispiel #4
0
    def delete(self, key, time=0):
        '''Deletes a key from the memcache.

        @return: Nonzero on success.
        @param time: number of seconds any subsequent set / update commands should fail. Defaults to 0 for no delay.
        @rtype: int
        '''
        memcache.check_key(key)
        server, key = self._get_server(key)
        if not server:
            yield 0
        self._statlog('delete')
        if time != None:
            cmd = "delete %s %d" % (key, time)
        else:
            cmd = "delete %s" % key

        try:
            yield server.send_cmd(cmd)
            yield server.expect("DELETED")
        except socket.error, msg:
            if isinstance(msg, tuple): msg = msg[1]
            server.mark_dead(msg)
            yield 0