Skip to main content
Glama
redis

Redis MCP Server

Official
by redis

scan_all_keys

Retrieve all Redis keys matching a pattern by automatically handling SCAN cursor iterations. Use this tool to safely collect matching keys without the memory risks of KEYS * for large datasets.

Instructions

Scan and return ALL keys matching a pattern using multiple SCAN iterations.

This function automatically handles the SCAN cursor iteration to collect all matching keys. It's safer than KEYS * for large databases but will still collect all results in memory.

⚠️ WARNING: With very large datasets (millions of keys), this may consume significant memory. For large-scale operations, consider using scan_keys() with manual iteration instead.

Args: pattern: Pattern to match keys against (default is "*" for all keys). batch_size: Number of keys to scan per iteration (default 100).

Returns: A list of all keys matching the pattern or an error message.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
patternNo*
batch_sizeNo

Implementation Reference

  • The handler function for the 'scan_all_keys' MCP tool. It performs iterative SCAN operations on Redis to retrieve all keys matching the given pattern, handling cursor management and byte decoding internally. The @mcp.tool() decorator registers the tool.
    @mcp.tool()
    async def scan_all_keys(
        pattern: str = "*", batch_size: int = 100
    ) -> Union[str, List[str]]:
        """
        Scan and return ALL keys matching a pattern using multiple SCAN iterations.
    
        This function automatically handles the SCAN cursor iteration to collect all matching keys.
        It's safer than KEYS * for large databases but will still collect all results in memory.
    
        ⚠️  WARNING: With very large datasets (millions of keys), this may consume significant memory.
        For large-scale operations, consider using scan_keys() with manual iteration instead.
    
        Args:
            pattern: Pattern to match keys against (default is "*" for all keys).
            batch_size: Number of keys to scan per iteration (default 100).
    
        Returns:
            A list of all keys matching the pattern or an error message.
        """
        try:
            r = RedisConnectionManager.get_connection()
            all_keys = []
            cursor = 0
    
            while True:
                cursor, keys = r.scan(cursor=cursor, match=pattern, count=batch_size)
    
                # Convert bytes to strings if needed and add to results
                decoded_keys = [
                    key.decode("utf-8") if isinstance(key, bytes) else key for key in keys
                ]
                all_keys.extend(decoded_keys)
    
                # Break when scan is complete (cursor returns to 0)
                if cursor == 0:
                    break
    
            return all_keys
        except RedisError as e:
            return f"Error scanning all keys with pattern '{pattern}': {str(e)}"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/redis/mcp-redis'

If you have feedback or need assistance with the MCP directory API, please join our Discord server