【问题标题】:Best way to delete multiple keys with wildcard in redis-cli在 redis-cli 中使用通配符删除多个键的最佳方法
【发布时间】:2016-04-12 18:25:54
【问题描述】:

我想从 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接了命令行。

【问题讨论】:

    标签: bash redis node-redis redis-cli


    【解决方案1】:

    我在某处读到 Keys 不应该用于删除具有模式的多个密钥,因为它会使服务器面临 DoS 等安全风险。

    不安全,只是在 KEYS 运行时拒绝服务,因为它是阻塞的(如果回复太大,则很少出现 OOM 场景)。

    这个 bash 脚本会是一种更安全的删除密钥的方法吗?

    我会说礼貌而不是更安全 - 这一个班轮将允许在 SCANs 之间处理其他请求,而不是在此期间阻塞服务器。

    xargs -L 1000 是否意味着在每个循环中它将删除 1000 个键?

    这意味着每个DEL 将拥有多达 1000 个密钥,具体取决于扫描结果。

    我想从 node.js 运行一个 bash 脚本,以在每次服务器重新启动时从 redis 中删除所有会话密钥。

    如果您的 Redis 实例仅用于存储会话,您可以考虑FLUSHALL。或者,如果(并且您应该)每个会话密钥都有一个 TTL,您可以为会话使用 per-server-restart 前缀,让旧会话自然过期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2020-10-13
      • 2016-12-03
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多