【发布时间】:2021-11-24 08:42:14
【问题描述】:
我通过 SADD、SREM 使用具有 set 结构的 Redis 来分别插入和删除。 在某个时间点,我需要迭代集合中的所有元素并处理它们,最后从集合中删除每个元素。为了迭代所有元素,我使用了SSCAN。在文档中,他们说如下,
命令也允许返回零元素,只要返回的游标不为零,客户端不应该认为迭代完成。
为了迭代集合中的所有元素,我从零开始光标。然后,我处理了从 SSCAN 返回的每个元素,并使用 SREM 操作从集合中删除每个元素。我使用从 SSCAN 操作的先前结果返回的游标进行下一次迭代。这个过程一直持续到从 SSAN 返回的游标为零并且返回的数组中没有元素为止。在迭代期间,没有新元素被添加到集合中。 但是,完成该过程后,集合中还存在元素。 在我的预期中,集合应该是空的。有什么问题? 我应该检查集合中是否有元素吗?例如,通过使用 SCARD?
这是我做的操作,
SADD key element
SADD key element
..
..
result = SSCAN key 0 Count 100
while elements and next_cursor != 0:
for e in elements
process e
SREM key
SSCAN key next_cursor Count 100
// process the last result returned with zero value cursor
for e in elements
process e
SREM key
【问题讨论】:
标签: redis