Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
redis获取多个键';在一个查询中选择s值?_Redis - Fatal编程技术网

redis获取多个键';在一个查询中选择s值?

redis获取多个键';在一个查询中选择s值?,redis,Redis,Redis中是否有任何命令可以在一个查询中获取多个键的值 实际上,我的键都是集合,所以我想获取它们的所有值,但由于成员在参数中只获取一个键,这在单个查询中是否可能实现。您无法在一个查询中获取多个集合的值。您必须多次查询数据库。 但是,您可以使用单个查询执行涉及多个集合的操作。此类操作的命令包括: SDIFF-返回由第一个集合和所有连续集合之间的差异产生的集合成员 SINTER-返回由所有给定集合的交集生成的集合成员 SUNION-返回由所有给定集合的并集产生的集合成员 我认为以下文档可能会对您

Redis中是否有任何命令可以在一个查询中获取多个键的值


实际上,我的键都是集合,所以我想获取它们的所有值,但由于成员在参数中只获取一个键,这在单个查询中是否可能实现。

您无法在一个查询中获取多个集合的值。您必须多次查询数据库。
但是,您可以使用单个查询执行涉及多个集合的操作。此类操作的命令包括:

  • SDIFF-返回由第一个集合和所有连续集合之间的差异产生的集合成员

  • SINTER-返回由所有给定集合的交集生成的集合成员

  • SUNION-返回由所有给定集合的并集产生的集合成员

    • 我认为以下文档可能会对您有所帮助:

      面对这样的问题,我发现了Redis的这种能力。 如果您只需要值,而不需要知道值的关键,那么它就是您所需要的

      我检查了超过667把钥匙的性能。结果如下:

      方法1是667个顺序请求

      方法2是667个并发请求


      方法3使用的是sunion

      您对多个查询有什么担心?例如,假设我需要5000个键的值,现在我需要启动5000个redis查询,您不认为如果只在一个查询中得到结果会更好吗?在一个查询中获得这么多数据是个坏主意。因为Redis在处理请求时是单线程的。如果您试图在一次查询中获得5000个集合的成员,它将在很长一段时间内阻止Redis,而其他客户端将无法读取或写入Redis。此外,它还将使Redis占用太多内存来准备这个巨大的响应。@因为\u stack从未想过这一点,那么触发100次查询可能是50次的最佳解决方案是什么?它会更好吗?正如@Supermacy在他的回答中提到的,没有这样的命令。我仍然不认为把多个集合的所有成员都集合起来是个好主意。事实上,如果一个集合非常大,那么将所有成员集合在一个集合中也是一个坏主意。相反,您可能需要
      SSCAN
      命令。