使用模式合并 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)。
就是说,如果您需要的是按前缀计算宠物数量,您应该考虑可以提供该服务的替代数据模型。
我有一个简单的 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)。
就是说,如果您需要的是按前缀计算宠物数量,您应该考虑可以提供该服务的替代数据模型。