You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用redis-cli将Redis所有键值对导出为CSV格式文件

Redis全量键值对导出方法

方案1:导出原生RDB备份文件(最推荐用于全量备份/恢复)

这种方式会导出所有键值对的完整信息,包括过期时间、数据类型、嵌套结构等,可直接用于Redis数据恢复。

  • 执行命令:
    redis-cli -h <你的Redis主机地址> -p <端口> -a <密码(如有)> --rdb <导出文件名.rdb>
  • 恢复方法:将导出的rdb文件放入目标Redis的工作目录,重命名为配置文件中指定的rdb文件名(默认是dump.rdb),重启Redis即可完成数据恢复。

方案2:导出为可读CSV格式(适合做数据统计/分析)

如果需要和你当前单键导出的CSV格式兼容,可使用以下方法:

大库安全导出脚本(非阻塞,支持所有数据类型)

不要在生产大库直接使用KEYS *命令遍历键,会导致Redis实例阻塞,推荐用SCAN遍历的shell脚本:

#!/bin/bash
# 配置你的Redis连接参数
REDIS_HOST="127.0.0.1"
REDIS_PORT="6379"
REDIS_PASSWORD="" # 无密码则留空
OUTPUT_FILE="redis_all_data.csv"

# 写入CSV表头
echo "key,data_type,value" > "$OUTPUT_FILE"

# SCAN遍历所有键
redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ${REDIS_PASSWORD:+-a "$REDIS_PASSWORD"} --scan | while read -r key; do
    key_type=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ${REDIS_PASSWORD:+-a "$REDIS_PASSWORD"} type "$key")
    # 按类型读取值
    case $key_type in
        string)
            val=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ${REDIS_PASSWORD:+-a "$REDIS_PASSWORD"} --csv get "$key")
            echo "\"$key\",\"string\",$val" >> "$OUTPUT_FILE"
            ;;
        list)
            val=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ${REDIS_PASSWORD:+-a "$REDIS_PASSWORD"} --csv lrange "$key" 0 -1)
            echo "\"$key\",\"list\",$val" >> "$OUTPUT_FILE"
            ;;
        hash)
            val=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ${REDIS_PASSWORD:+-a "$REDIS_PASSWORD"} --csv hgetall "$key")
            echo "\"$key\",\"hash\",$val" >> "$OUTPUT_FILE"
            ;;
        set)
            val=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ${REDIS_PASSWORD:+-a "$REDIS_PASSWORD"} --csv smembers "$key")
            echo "\"$key\",\"set\",$val" >> "$OUTPUT_FILE"
            ;;
        zset)
            val=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" ${REDIS_PASSWORD:+-a "$REDIS_PASSWORD"} --csv zrange "$key" 0 -1 withscores)
            echo "\"$key\",\"zset\",$val" >> "$OUTPUT_FILE"
            ;;
        *)
            echo "\"$key\",\"$key_type\",\"unsupported_data_type\"" >> "$OUTPUT_FILE"
            ;;
    esac
done

小库简化命令(仅支持string类型)

如果你的实例数据量很小,且所有键都是string类型,可以直接用简化命令:
redis-cli -h <主机地址> keys "*" | xargs -I {} redis-cli -h <主机地址> --csv get {} > all_string_keys.csv

方案3:导出AOF格式(适合需要追溯写入操作的场景)

如果需要获取所有重建数据的写入命令,可导出AOF文件:

  1. 执行redis-cli -h <主机地址> BGREWRITEAOF触发AOF重写
  2. 等待重写完成后,直接到Redis工作目录下取重写后的AOF文件即可

注意:如果需要隐藏密码避免出现在进程列表中,可以先执行export REDISCLI_AUTH=<你的Redis密码>,后续执行redis-cli命令不需要再加-a参数。连接Redis集群时需加上-c参数支持节点跳转。

内容的提问来源于stack exchange,提问作者lsg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:36:03