Redis中是否有命令可以在一个查询中获取多个key的值?实际上,我的键都是集合,所以我想得到它们的所有值,但由于成员只在参数中使用一个键,这在一个查询中可能吗?
hxzsmxv21#
从技术上讲,这不是一个“问题”。如果不需要联合,只想保存往返时间,则使用pipelining。例如,像这样的交易-
multi smembers mykey1 smembers mykey2 exec
Redis客户端有管道机制,所有的查询都将在应用程序缓冲区中排队,并立即发送到Redis服务器。
qyzbxkaa2#
不能在一个查询中获取多个集合的值。你必须多次查询数据库。
但是,您可以使用单个查询进行涉及多个集合的操作。此类操作的命令包括:*SDIFF-返回由第一个集合和所有后续集合之间的差异产生的集合的成员。*SINTER-返回由所有给定集合的交集产生的集合的成员。*SUNION-返回所有给定集合的并集所产生的集合的成员。
6psbrbz93#
以下文档可能会对你有所帮助:http://redis.io/commands/sunion我遇到了这样的问题,发现了Redis的这种能力。如果你只需要值,而不需要知道值的键,这就是你所需要的。我检查了超过667个键的性能。结果如下:
方法1是667个顺序请求方法2是667个并发请求方法3使用 sunion
3条答案
按热度按时间hxzsmxv21#
从技术上讲,这不是一个“问题”。
如果不需要联合,只想保存往返时间,则使用pipelining。例如,像这样的交易-
Redis客户端有管道机制,所有的查询都将在应用程序缓冲区中排队,并立即发送到Redis服务器。
qyzbxkaa2#
不能在一个查询中获取多个集合的值。你必须多次查询数据库。
但是,您可以使用单个查询进行涉及多个集合的操作。此类操作的命令包括:
*SDIFF-返回由第一个集合和所有后续集合之间的差异产生的集合的成员。
*SINTER-返回由所有给定集合的交集产生的集合的成员。
*SUNION-返回所有给定集合的并集所产生的集合的成员。
6psbrbz93#
以下文档可能会对你有所帮助:http://redis.io/commands/sunion
我遇到了这样的问题,发现了Redis的这种能力。如果你只需要值,而不需要知道值的键,这就是你所需要的。
我检查了超过667个键的性能。结果如下:
方法1是667个顺序请求
方法2是667个并发请求
方法3使用 sunion