1、在 Linux 系统上创建用于程序存放的目录:mkdir -p /opt/task/keys
2、通过 FTP 工具上传程序,并提取出下列两个文件到/opt/task/ 下:config.propertiestask.jar
3、导出 redis 所有key 到一个文件中( 测试环境中的 62万key 导出的时间是0.526s 生产环境中有程序在时时写入redis 的话需要停止一下程序:我们测试导出 1 亿key的时间在8分钟左右,请知悉!!)time redis-cli -p 8888 keys "*" >/opt/task/keys/keys.txt
![redis 批量设置过期时间 [ 亲测通过]](https://exp-picture.cdn.bcebos.com/5e9a2820b93acd89cd3138ba0335dd8a58de8b49.jpg)
4、将导出的key 分割多个文件(小文件加快程序执行速度),并移走或删除之前导出的文件。我们的测试环境分割的是10万行,生产环境分割的是100万行。split -l 100000 keys.txt -d 0rm -f keys.txt
![redis 批量设置过期时间 [ 亲测通过]](https://exp-picture.cdn.bcebos.com/a44e8afc508c9bce3b0c94c2d6dd884ce44afa49.jpg)
5、修改配置文件中相关IP,端口,key文件路径,日志路径,key前缀及过期时间432000=5天
![redis 批量设置过期时间 [ 亲测通过]](https://exp-picture.cdn.bcebos.com/b7b28f87031c99c0a409ff33af2fa872951fed49.jpg)
6、以后台进程方式执行程序(避免连接终端掉线,程序未完全执行完)。测试环境中 62万key批量设置时间耗时桃轾庾殇43.452s 生产环境中1亿key批量设置时间耗时一个半小时左右。下图可以看到我们设置的5天超时时间已经过了30秒了。time java -jar task.jar >/dev/null 2>&1 &redis-cli -p 8888 ttl waybill:filename:1000023532935
![redis 批量设置过期时间 [ 亲测通过]](https://exp-picture.cdn.bcebos.com/6061b9cd0c6efbf21e466b62127bbbf4db58da49.jpg)