远程批量删除Redis数据的步骤:1. 使用redis-cli连接远程Redis服务器:redis-cli -h 你的主机IP -p 端口 -a 密码;2. 进入交互模式后,使用keys * 命令查找匹配的key模式,比如keys "prefix:*";3. 使用redis-cli --scan --pattern "prefix:*" | xargs redis-cli del 批量删除;或者在交互模式下eval "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 1 "prefix:*";4. 对于大key数量,使用scan命令迭代删除避免阻塞:scan 0 match prefix:* count 100,然后循环del。
方法一:使用 KEYS 和 DEL 命令
首先连接到Redis:redis-cli -h 192.168.1.100 -p 6379。然后执行:redis-cli KEYS "user:*" | xargs redis-cli DEL。这样就能批量删除所有以user:开头的key了。注意,如果key太多,KEYS可能会阻塞服务器。
远程批量删除技巧
步骤:1. redis-cli -c -h host -p port;2. 在shell中:redis-cli -h host -p port --scan --pattern 'session:*' | xargs redis-cli -h host -p port del;这个方法适合远程操作,不会阻塞主进程。
使用 SCAN 安全删除
为了避免KEYS阻塞,推荐:cursor=0; while true; do cursor=$(redis-cli -h host SCAN $cursor MATCH pattern:* COUNT 1000); keys=$(echo $cursor | cut -d' ' -f2-); redis-cli -h host del $keys; if [ $cursor -eq 0 ]; then break; fi; done; 这个脚本可以远程安全批量删除。
Lua脚本批量删除
远程执行Lua:redis-cli -h host EVAL "for i=1,#KEYS do redis.call('del',KEYS[i]) end return #KEYS" 0 $(redis-cli --scan --pattern 'test:*'); 这是一键删除匹配key的方法。
注意事项和完整步骤
1. 确保有远程访问权限;2. 备份数据;3. 使用--pipe提高效率:echo 'DEL key1 key2' | redis-cli --pipe -h host;4. 对于海量数据,分批处理。
FAQ
Q: 批量删除会阻塞Redis吗?
A: KEYS命令会阻塞,使用SCAN迭代不会。
Q: 如何远程连接Redis?
A: redis-cli -h IP -p 端口 -a 密码。
Q: 删除所有数据怎么做?
A: redis-cli FLUSHALL,但慎用。
Q: Windows下怎么批量删除?
A: 用redis-cli.exe同样的命令,或者PowerShell循环SCAN。