Redis群集:如何删除特定主题标签的所有密钥

时间:2015-12-17 08:31:19

标签: redis key cluster-computing del

目前我们在我们的应用程序中使用Redis来存储不同类型的数据,使用前缀来拆分每个组。我们有许多“数据组”,它们将在生产环境中随着数量和规模而增长。

我们的要求意味着删除特定类型数据的所有键(具有给定前缀的所有键),当然我们不想使用KEYS命令< / strong>(我们不会使用多个DB,因为它是Redis中不推荐使用的做法)。

此外,我们计划在生产环境中使用Redis Cluster,我们必须以同样的方式满足此要求。

有一种标准方法可以删除给定主题标签的所有密钥吗? (参见文档here

注意:我们不会在不同的Redis实例中拆分数据,因为它可能会导致系统架构混乱(我们应该为每个实例管理故障转移)

2 个答案:

答案 0 :(得分:1)

您应该考虑维护一种标记机制,例如将一组键与每个标记相关联,这样您就可以立即使它们全部失效。

每次为键写入值时,都应将其键插入相应的标记集。

> SET {user}:123 john
> SADD :tags:{user} {user}:123

> SET {user}:678 mary
> SADD :tags:{user} {user}:678

然后要使其无效,请使用SMEMBERS获取无效的密钥。

> SMEMBERS :tags:{user}
1) "{user}:678"
2) "{user}:123"

> DEL {user}:678 {user}:123

答案 1 :(得分:0)

使用问题this answer中的How to atomically delete keys matching a pattern using Redis。这是用于按模式删除键的bash脚本。为每个Redis群集主节点执行它们。