如何在REDIS中标记密钥,以便以后可以删除与此标记匹配的所有密钥?

时间:2019-08-27 05:00:40

标签: redis

今天我们像这样保存数据:

redisClient->set($uniquePageID, $data);

并输出如下数据:

redisClient->get($uniquePageID)

但是现在我们需要删除基于userID的数据库。所以我们需要这样的东西:

redisClient->set($uniquePageID, $data)->tag($userID);

因此,我们可以删除仅与此用户ID相关的所有键,例如:

redisClient->tagDel($userID);

REDIS是否可以解决类似问题?

谢谢

1 个答案:

答案 0 :(得分:2)

没有内置的方法可以做到这一点。相反,您需要自己标记这些页面:

  • 设置页面数据对时,还要将页面ID放入相应用户的SET中。
  • 要删除给定用户的所有页面时,请扫描该用户的SET以获取该用户的页面ID,然后删除这些页面。

扫描SET时,可以使用SMEMBERSSSCAN命令,具体取决于SET的大小。如果SET大,最好使用SSCAN避免长时间阻止Redis。