使用模式合并 Redis 集成员值

Merge Redis set members values using a pattern

我有一个简单的 zset 名为 pets:

redis-cli zadd pets 1 cat1
redis-cli zadd pets 1 cat2
redis-cli zadd pets 1 cat3

redis-cli zadd pets 1 rat1
redis-cli zadd pets 1 rat2

该值始终为 1。现在设置状态为 redis-cli zrange pets 0 -1 withscores:

 1) "cat1"
 2) "1"
 3) "cat2"
 4) "1"
 5) "cat3"
 6) "1"
 7) "rat2"
 8) "1"
 9) "rat1"
10) "1"

有没有办法根据模式合并集合成员?我想对名称以前缀开头的所有成员求和,在我的例子中是宠物类型,以便得到以下结果:

1) "cat"
2) "3"
3) "rat"
4) "2"

我试过 zinterstore and zunionstore 但他们强制要求集合的成员使用相同的名称。

不,没有 built-in Redis 的噱头,但你可以用 Lua 脚本来实现它(参见 EVAL command)。

就是说,如果您需要的是按前缀计算宠物数量,您应该考虑可以提供该服务的替代数据模型。