如何在redis中获得2组的交集?

How to get intersection of 2 sets in redis?

我有两套Redis,一套是hmset做的:

HMSET cars:1 make Ferrari model 458 color red topSpeed 202mph

然后:

SADD make:Ferrari 1

当我输入此命令时:

SMEMBERS make:Ferrari

我得到“1” 然后我添加:geoadd carLoc 13.361389 38.115556 1

我正在尝试使用以下命令获取这两个集合的交集:georadius carLoc 13.361389 38.115556 1 store key1 我过滤了第一组并存储在另一组中,但我找不到将 SMEMBERS make:Ferrari 的结果存储到另一组并获得它们的交集的方法。有人可以帮助我吗?

如果问题是你想找到一个集合和一个 zset 的交集,那么没有本地方法可以做到这一点。我可以告诉你两个选项:

  1. make:Ferrari转换为zset,选择一些任意权重
  2. 创建一个 lua 脚本以编程方式执行此操作

一般来说,如果完全有可能将该密钥转换为 zset,#1 会更容易做到。如果不好做,那就考虑创建两个key:一个是setmake:Ferrari,另一个是zsetz:make:Ferrari,用第二个做交集