在 redis-cli 中使用通配符删除多个键的最佳方法
Best way to delete multiple keys with wildcard in redis-cli
我想 运行 来自 node.js 的 bash 脚本,以便在每次服务器重新启动时从 redis 中删除所有会话密钥。
我在某处读到 Keys
不应该用于删除具有模式的多个密钥,因为它会使服务器面临 DoS 等安全风险。这个 bash 脚本会是一种更安全的删除密钥的方法吗? xargs -L 1000
是否意味着在每个循环中它会删除 1000 个键?我理解正确吗?
#!/bin/bash
redis-cli --scan --pattern "SESSION:*" | xargs -L 1000 redis-cli del
我从 HERE 中获取了命令行。
I have read somewhere that Keys
shouldn't be used to delete multiple keys with a pattern because it would subject the server to security risks like DoS.
不安全,只是拒绝服务,而 KEYS
是 运行,因为它正在阻塞(如果回复太大,则很少出现 OOM 情况)。
Would this bash script a safer way to delete keys?
我会说更礼貌而不是更安全 - 这个班轮将允许在 SCAN
秒之间处理其他请求,而不是在持续时间内阻塞服务器。
Does xargs -L 1000
mean in each loop it will delete 1000 keys?
这意味着每个 DEL
将有最多 1000 个密钥,具体取决于扫描结果。
I want to run a bash script from node.js to remove all session keys from redis every time the server restarts.
如果你的Redis实例只用于存储session,可以考虑FLUSHALL
。或者,如果(你应该)每个会话密钥都有一个 TTL,你可以只为你的会话使用 per-server-restart 前缀,让旧会话自然过期。
我想 运行 来自 node.js 的 bash 脚本,以便在每次服务器重新启动时从 redis 中删除所有会话密钥。
我在某处读到 Keys
不应该用于删除具有模式的多个密钥,因为它会使服务器面临 DoS 等安全风险。这个 bash 脚本会是一种更安全的删除密钥的方法吗? xargs -L 1000
是否意味着在每个循环中它会删除 1000 个键?我理解正确吗?
#!/bin/bash
redis-cli --scan --pattern "SESSION:*" | xargs -L 1000 redis-cli del
我从 HERE 中获取了命令行。
I have read somewhere that
Keys
shouldn't be used to delete multiple keys with a pattern because it would subject the server to security risks like DoS.
不安全,只是拒绝服务,而 KEYS
是 运行,因为它正在阻塞(如果回复太大,则很少出现 OOM 情况)。
Would this bash script a safer way to delete keys?
我会说更礼貌而不是更安全 - 这个班轮将允许在 SCAN
秒之间处理其他请求,而不是在持续时间内阻塞服务器。
Does
xargs -L 1000
mean in each loop it will delete 1000 keys?
这意味着每个 DEL
将有最多 1000 个密钥,具体取决于扫描结果。
I want to run a bash script from node.js to remove all session keys from redis every time the server restarts.
如果你的Redis实例只用于存储session,可以考虑FLUSHALL
。或者,如果(你应该)每个会话密钥都有一个 TTL,你可以只为你的会话使用 per-server-restart 前缀,让旧会话自然过期。