3

目前我们在我们的应用程序中使用 Redis 来存储不同类型的数据,使用前缀来分割每个组。我们有许多“数据组”,它们会在生产环境中增长,无论是数量还是规模。

我们有一个要求意味着删除特定类型数据的所有键(具有给定前缀的所有键),当然我们不想使用该KEYS命令(并且我们不会使用多个数据库,因为它已被弃用在 Redis 中练习)。

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

有一种标准方法可以删除给定主题标签的所有键吗?(请参阅此处的文档)

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

4

2 回答 2

1

You should consider maintaining a tagging mechanism, for example associating a set of keys to each tag, so you can then invalidate them all at once.

Every time you write a value to a key, you should also insert its key to the corresponding tag set.

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

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

And then to invalidate, use SMEMBERS to obtain the keys to invalidate.

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

> DEL {user}:678 {user}:123
于 2015-12-18T00:18:11.373 回答
0

使用问题如何使用 Redis 原子地删除与模式匹配的键的这个答案。这是按模式删除键的 bash 脚本。为每个 Redis 集群主节点执行它们。

于 2015-12-17T11:13:31.030 回答