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
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)
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
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