当前位置: 首页 > 面试题库 >

如何在Predis中将SCAN与MATCH选项一起使用

秦皓君
2023-03-14
问题内容

我以前曾使用该KEYS命令在Redis数据库中搜索与特定模式匹配的键。从Redis
2.8开始,该SCAN命令似乎比它更可取,KEYS因为它返回一个迭代器,而不是立即扫描整个键空间。

我正在使用Predis > =
0.8.5,它应该支持该SCAN命令的PHP迭代器。Predis没有很多文档,所以我想知道如何将以下KEYS命令转换为SCAN对应的命令:

$client->keys($pattern)

我尝试了以下方法:

$client->scan('MATCH', $pattern);

哪种方法有效-但不会返回本地PHP迭代器。使用Predis的内置迭代器支持真的很好。


问题答案:

我在Predis示例目录中找到了如何做。

要用于SCAN搜索数据库中的匹配键,只需使用以下Predis\Collection\Iterator\Keyspace类:

use Predis\Collection\Iterator;

$client = ...;
$pattern = 'foo*';

foreach (new Iterator\Keyspace($client, $pattern) as $key) {
    ...
}

显然,Predis在Predis\Collection\Iterator每个返回迭代器的命令中都有一个迭代器类:

  • Keyspace 对于 SCAN
  • HashKey 对于 HSCAN
  • SetKey 对于 SSCAN
  • SortedSetKey 对于 ZSCAN
  • ListKey对于LRANGE-这实际上并没有使用Redis迭代器,但是LRANGE无论如何它都是一个不错的接口。


 类似资料:
  • 我有下一个代码: null null 如何注意到组件内部,我得到了一个道具。我的问题是下一个:为什么当我更改选项卡时,单击每个选项卡,我会在useEffect中获得正确的数据,但如果我在同一个选项卡上单击两次,我在console中没有获得值?即使我添加了依赖项,也会发生这种情况。如何在控制台中每次获得值,甚至在同一个选项卡上点击两次? 演示:https://codesandbox.io/s/bas

  • 问题内容: 我正在使用jaxws-maven-plugin为Web服务使用者应用程序执行wsimport。我正在使用2010年随JAX-WS 2.2.2 RI引入的wsimport上的选项。之所以这样做,是因为我想将WSDL捆绑在jar中。 我在制作pom时没有问题。对于插件配置,我可以执行以下操作: 当我执行构建时,我创建的jar称为,其中包含文件。在的META- INF目录中,可以找到wsdl

  • 问题内容: 我想将组件与Android的新实现一起使用。但是,提供的方法仅支持旧的实现。有没有一种方法可以轻松地将a绑定到组件? 问题答案: 您必须使用它 来模拟和设置with 。否则,您将必须编写自己的适配器,以结合双方。 它的代码在Kotlin中看起来像这样

  • 问题内容: 好吧,我想制作一个可以显示4种不同分布的动画,但是当我使用gridspec制作子图时,它不起作用,代码如下: 在这种情况下,动画不起作用,但有趣的是,如果我使用 使ax1,ax2,ax3,ax4保持不变,代码运行良好,因此使用gridspec时是否需要了解一些详细信息? 问题答案: GridSpec参数和与不兼容。您可以使用或指定间距。 如果要使用GridSpec,则有两个选择: 删除

  • 问题内容: 我想使用查询字符串成功登录后将用户重定向到另一个页面。如果我复制并粘贴到浏览器的地址栏中,则可以正常工作。但是如果我用 网址看起来像 如何将%3F解码为“?” ?谢谢 问题答案: 它应该是

  • 所以我导入PromiseKit,然后尝试 显然,这是行不通的,我想知道,如果可能的话,我还缺少什么可以让Firebase的promise发挥作用。我试图实现的是用一个catch方法一次性删除四个Firebase引用。 使用nodeJs,我可以轻松使用: 有没有办法在Swift中实现这一点?