Вычислить разницу между двумя наборами (отсортированными и простыми)

Есть ли способ вычислить разницу между двумя отсортированными наборами (zset) или мне нужно использовать для этого простые наборы?

Проблема:

  • Установить F содержит список отсортированного идентификатора (отсортированный набор, полный список)
  • Установить K содержит список id (простой набор, подмножество F)

Я хочу получить каждую запись в F, чтобы не в K.

Возможно ли это использование Redis в одиночку или мне нужно делать вычисления в приложении? Если да, то каков наилучший способ?

EDIT: SDIFF не подходит для этой цели, так как не позволяет отсортировать наборы.

Ответ 1

Сделайте копию F как простой набор. Позвольте называть его G. Теперь выполните SDIFF.

Или...

Сделайте копию F как отсортированный набор. Пусть назовем его G. Перейдем через K и удалим каждый элемент из G.

SDIFF действительно должен работать на отсортированных наборах, регулярных наборах или комбинациях. Но в это время этого не происходит.

Кроме того, если F очень велико, вы можете увидеть некоторые хиты производительности, когда вы сделаете копию. В этом случае создайте набор G в вашем Redis DB, который обновится при обновлении K. То есть F и G первоначально равны. Когда вы добавляете элементы в K, удалите элемент из G.