《玩转Redis》系列文章主要讲述Redis的基础及中高级应用。本文是《玩转Redis》系列第【13】篇,最新系列文章请前往公众号“zxiaofan”(点我点我)查看,或百度搜索“玩转Redis zxiaofan”即可。
本文关键字:玩转Redis、Redis数据导入、Redis大量插入、Redis数据导出、Redis导出指定通配符、Redis数据删除、Redis批量删除、Redis删除指定前缀key、Redis删除指定通配符key;
往期精选:《玩转Redis-删除了两百万key,为什么内存依旧未释放?》
大纲
- Redis生产环境安全高效导入大量数据
- 使用shell脚本构造测试数据
- Redis非集群模式导入大量数据
- Redis集群模式导入大量数据
- Redis生产环境安全高效导出大量数据
- Redis导入导出所有数据
- Redis导出指定前缀(指定通配符)数据
- Redis生产环境安全高效删除数据
- Redis删除已知的指定key
- Redis删除指定前缀(指定通配符)数据
- 实用小技巧
- Redis统计指定通配符key的数量
- 免输密码连接Redis脚本
- 思考题:Linux可以设置脚本可执行但不可读吗
概述:
本文将模拟生产环境,构造大量测试数据,并完成高效安全的数据导入、数据导出、数据删除。
众所周知,Redis是单线程的,一旦一个命令发生长时间阻塞,极易导致大量命令阻塞,从而导致生产环境雪崩,所以本文着重强调 【生产环境、安全高效】 操作。
Let’s Go!
1、Redis生产环境安全高效导入大量数据
1.1、使用shell脚本构造测试数据
linux环境创建dataBuild.sh脚本,此脚本用于生成测试数据,脚本的入参是测试数据的数量,脚本内容如下:
#!/bin/sh
# init Test Data.
# Build By @zxiaofan.com
echo "构造数量:$1";
rm -f ./testdata.txt;
touch testdata.txt;
starttime=`date +'%Y-%m-%d %H:%M:%S'`;
echo "Start: $starttime";
for((i=0; i< $1 ;i++))
do
str='set key-';
name=${
str}${
i}' value'${
i};
echo $name>> testdata.txt;
done
endtime=`date +'%Y-%m-%d %H:%M:%S'`;
echo "End: $endtime";
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"
#echo 'show testdata';
#cat testdata.txt;
建议在linux环境创建脚本,否则可能执行shell脚本时报错$’\r’: command not found。解决方案:vim acc.conf.base,然后执行 “:set fileformat=unix” ,并wq保存即可。
接下来就可以执行脚本生成测试数据了,此处生成30W数据,脚本执行完毕后当前目录会生成测试数据文件testdata.txt。
# By @zxiaofan
# 执行脚本生成30W测试数据;
root@xxx:/study/redis# ./dataBuild.sh 300000
构造数量:300000
Start: 2020-10-11 17:30:45
End: