def METHOD_NAME(self, keys=None):
    """Keys=None, delete expired items"""
    if not os.path.isfile(self._db_path):
        return None
    if not keys:
        keys = []
    if not isinstance(keys, list):
        keys = [keys]
    paths_for_delete = [self.get_cache_path(k) for k in keys]
    found = False
    newlines = []
    with open(self._db_path, encoding="utf8") as fp:
        for line in fp.readlines():
            line = line.strip()
            if "=" not in line:
                continue
            expire, fname = line.split("=")
            path = os.path.join(self.cache_dir, fname)
            try:
                if (
                    time() < int(expire)
                    and os.path.isfile(path)
                    and path not in paths_for_delete
                ):
                    newlines.append(line)
                    continue
            except ValueError:
                pass
            found = True
            if os.path.isfile(path):
                try:
                    os.remove(path)
                    if not os.listdir(os.path.dirname(path)):
                        fs.rmtree(os.path.dirname(path))
                except OSError:
                    pass
    if found and self._lock_dbindex():
        with open(self._db_path, mode="w", encoding="utf8") as fp:
            fp.write("\n".join(newlines) + "\n")
        self._unlock_dbindex()
    return True