如何使用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文件:
- 执行
redis-cli -h <主机地址> BGREWRITEAOF触发AOF重写 - 等待重写完成后,直接到Redis工作目录下取重写后的AOF文件即可
注意:如果需要隐藏密码避免出现在进程列表中,可以先执行
export REDISCLI_AUTH=<你的Redis密码>,后续执行redis-cli命令不需要再加-a参数。连接Redis集群时需加上-c参数支持节点跳转。
内容的提问来源于stack exchange,提问作者lsg
相关产品推荐
相关产品推荐

