Complete Guide to Retrieving Keys and Values in Redis Command Line

Nov 22, 2025 · Programming · 8 views · 7.8

Keywords: Redis | Key-Value Retrieval | Command Line Operations | Data Types | Performance Optimization

Abstract: This article provides a comprehensive exploration of methods to safely and efficiently retrieve all keys and their corresponding values in the Redis command-line interface. By analyzing the characteristics of different Redis data types, it offers complete shell script implementations and discusses the performance implications of the KEYS command along with alternative solutions. Through practical code examples, the article demonstrates value retrieval strategies for strings, hashes, lists, sets, and sorted sets, providing valuable guidance for developers working in both production and debugging environments.

Technical Challenges in Redis Key-Value Retrieval

During Redis database management, developers often need to view all stored keys and their corresponding values. While the redis-cli keys * command can list all key names, Redis itself does not provide a single command to directly retrieve all key-value pairs. This design stems from Redis supporting multiple data structures, each with its specific value retrieval methods.

Data Type Identification and Corresponding Operations

To completely retrieve key-value pairs, it's essential to first identify each key's data type, then use the appropriate command to obtain the value. The main data types supported by Redis and their corresponding retrieval commands are as follows:

After using the type <key> command to determine the key's data type:

Complete Shell Script Implementation

Here is a complete shell script implementation that automatically iterates through all keys and retrieves their corresponding values:

#!/bin/sh -eu
keys=`redis-cli keys '*'`
if [ "$keys" ]; then
    echo "$keys" | while IFS= read -r key; do
        type=`echo | redis-cli type "$key"`
        case "$type" in
            string) value=`echo | redis-cli get "$key"`;;
            hash) value=`echo | redis-cli hgetall "$key"`;;
            set) value=`echo | redis-cli smembers "$key"`;;
            list) value=`echo | redis-cli lrange "$key" 0 -1`;;
            zset) value=`echo | redis-cli zrange "$key" 0 -1 withscores`;;
        esac
        echo "> $key ($type):"
        echo "$value" | sed -E 's/^/    /'
    done
fi

This script first uses redis-cli keys '*' to obtain all keys, then iterates through each key, retrieves the value using the appropriate command based on its data type, and outputs the results in an indented format.

Performance Considerations and Production Environment Warnings

Important Warning: The KEYS command should be used with extreme caution in production environments. This command has a time complexity of O(N), where N is the number of keys in the database. For large databases, executing this command can cause severe performance issues and may even make the Redis server temporarily unavailable.

The Redis official documentation explicitly states: "Consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout."

Alternative Solutions and Best Practices

For production environments, the following alternative approaches are recommended:

In-depth Analysis of the GET Command

According to Redis official documentation, the GET command has the following characteristics:

Here is a Python example demonstrating the basic usage of the GET command:

import redis
r = redis.Redis(host="localhost", port=6379, db=0, decode_responses=True)
res = r.set("bike:1", "Process 134")
print(res)  # Output: True
res = r.get("bike:1")
print(res)  # Output: "Process 134"

Data Type-Specific Value Retrieval Strategies

Each Redis data type has its unique structure and retrieval methods:

Hash Type: hgetall returns all field-value pairs in alternating field name and value format.

List Type: The lrange command retrieves list elements by specifying start and end indices, using 0 and -1 to obtain the entire list.

Set Type: smembers returns all members of the set in an undetermined order.

Sorted Set Type: zrange with the withscores option returns members and their corresponding scores in alternating member and score format.

Practical Application Scenarios

This key-value retrieval technique is primarily applicable to:

By understanding Redis's data model and the characteristics of corresponding commands, developers can more effectively manage and operate Redis databases while avoiding commands that may impact performance in production environments.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.