首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >广泛使用红光扫描可以吗?

广泛使用红光扫描可以吗?
EN

Software Engineering用户
提问于 2021-01-12 15:37:03
回答 1查看 2K关注 0票数 1

在redis中,声明不应在生产中使用keys命令,因为它在执行时阻塞其他进程,所以最好对具有一定批处理大小的所有键使用扫描迭代。我在文档中看到redis使用散列索引,所以我假设它不能用于范围查询,如扫描和键。

但是我们的系统是以这样的方式完成的,我们需要广泛地使用扫描。可以吗?它能显著降低哈希查询的性能吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2021-01-12 16:06:14

注Redis是单线程,所以任何操作都可以阻止另一个操作。

(它试图通过将读取和写入I/O套接字的时间分配给其他线程,从而在最近发布中解决这个问题,因此Redis进程可以将更多的周期用于操作、存储和检索数据,从而提高总体性能。不过,您需要自己在自己的用例上进行基准测试。)

我在文档中看到redis使用散列索引,所以我假设它不能用于范围查询

Redis中有多个数据类型,如果使用排序集,zrange将返回指定的元素范围。

可以吗?它能显著降低哈希查询的性能吗?

不确定用例,但我认为scan用于匹配更好,例如在Java中

代码语言:javascript
复制
KeyScanCursor<String> cursor = sync.scan(ScanArgs.Builder.limit(1000).match(wildMatch));

是的,扫描可能非常慢,每个光标只返回很少的键。因此,正如上面的示例所示,最好设置一个最大密钥号,以避免花费很长时间和/或触发请求资源限制。

因此,你可以做这样的事情

代码语言:javascript
复制
while (!cursor.isFinished() && fetchedResult.size() < keyNumber) 
{
    fetchedResult.addAll(cursor.getKeys());
    cursor = sync.scan(cursor, ScanArgs.Builder.matches(wildMatch));
}
票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/420959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档