【问题标题】:Is it safe to use Spring Redis keys?使用 Spring Redis 密钥是否安全?
【发布时间】:2016-02-22 08:10:16
【问题描述】:

我想用字符串模式搜索键。我认为 SCAN 不像 Keys 那样直接。

redistemplate.opsForSet().getOperations().keys(pattern);

这很简单,所以如果我有我的价值作为我的关键,我可以在一定程度上进行搜索和排序。但我唯一的问题是有一个警告说明不要使用 KEYS 命令。不确定 Spring 是否处理过,请提供您的想法。

【问题讨论】:

    标签: spring redis key


    【解决方案1】:

    您应该考虑将KEYS (http://redis.io/commands/keys) 视为调试命令。在你的开发实例上的 redis-cli 中运行它是非常好的,但不要在最终会在你的生产实例上结束的代码中使用它。

    根据您的 redis 数据库的大小和KEYS 使用的模式,该命令可能需要很长时间才能执行。在此期间,redis 服务器将无法为任何其他命令提供服务。

    SCAN 可能不那么直接,但它是在不降低服务器速度的情况下枚举键的正确方法。你会发现很多 Spring 的示例,比如这个:https://stackoverflow.com/a/30260108/3677188

    【讨论】:

    • 感谢您的回复,但场景有点棘手。我处理数十亿条记录,在 DB 中处理数十亿条记录很容易,但我确实希望将它放在 DB 之外的内联内存中。所以,我选择了redis,我尝试了一些选项,比如将记录分成多个列表并存储在redis中。但是,我不能对值进行排序或搜索。所以下一步是将键存储为值,我可以对仅匹配 KEYS 的模式进行搜索。
    • 我只是不明白如何使用 SCAN。我需要匹配模式。我有以下键, >Keys * >Key0-Test+XXXXX >Key0-Production+XXXXX >Key0-EVAL+XXXXX >Key0-Test-PreProduction+XXXXX >Key0-Test-EVAL+XXXXX 等等,现在,我想要找到所有匹配 Test 的键。请让我知道如何在 SCAN 中实现。
    猜你喜欢
    • 1970-01-01
    • 2022-11-13
    • 2012-08-25
    • 2016-05-14
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2016-04-25
    相关资源
    最近更新 更多