shell导出和导入redis

本文介绍了一套用于Redis数据库的数据迁移方案,包括数据导出、整理及导入的Shell脚本实现,适用于批量处理Hash类型的键值对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、导出redis

[plain]  view plain  copy
  1. #!/bin/bash  
  2. REDIS_HOST=localhost  
  3. REDIS_PORT=6379  
  4. REDIS_DB=1  
  5.   
  6.   
  7. KEYNAME=redis:hash:*  
  8. KEYFILE=key.txt  
  9. echo "KEYS $KEYNAME" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB > $KEYFILE  
  10.   
  11.   
  12. OUTFILE=valuelist.txt  
  13. TEMPFILE=$OUTFILE.tmp  
  14. echo > $TEMPFILE  
  15. for key in `cat $KEYFILE`  
  16. do  
  17.     echo $key  
  18.     #echo "HGETALL $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE    
  19.     echo "GET $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE  
  20. done  


2、整理导出的结果

[plain]  view plain  copy
  1. cat $TEMPFILE|xargs -n 2|awk -F" " -v KEYNAME=$KEYNAME '{print "HSET "KEYNAME " " $1, "\""$2"\""}' > $OUTFILE  
其中的xargs -n 2是把2行合成一行,换行符用空格代替

然后用awk按空格分开,$1是keynam $2是key的值

再次转换成HSET的格式,其中用到KEYNAME变量,这个要用-v预先定义。

最后转化为 HSET KEYNAME KEY "VALUE"格式。


3、导入转换的结果

[plain]  view plain  copy
  1. cat $OUTFILE | redis-cli -h localhost -p 6379  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值