Redis 如何移除某一个分组下的所有键?(Redis 好像不支持通配符)

如 Redis 存储的键如下:
roomid:5:id.333
roomid:5:id.334
roomid:5:id.335
roomid:5:id.336
roomid:5:id.337
roomid:5:id.338
……
这种冒号的写法叫 Redis 的分组形式吧,那么我想一次性移除某个分组下的所有键,Redis 好像不支持通配符的语法,如 Del roomid:5:id.* 这种形式,在程序里如何实现呢?

PS:如果是 redis-cli 客户端命令行,可以用管道的形式 redis-cli KEYS "prefix:*" | xargs redis-cli DEL.

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 12
leo

这个管道的本质也是一个个去删,和代码里用循环删是一个效果

6年前 评论

@leo 假如这个分组下有几百上千个键,循环删效率太低了

6年前 评论

是一种思路

6年前 评论

@纸牌屋弗兰克 redis上万个键删起来0.1秒都不到吧

6年前 评论
leo

@我是谁 这个取决于本地与 redis 服务器的网络延迟

6年前 评论

支持的

$keys = $redis->keys('roomid:5:id.*');
$redis->delete($keys);

大概长这样

6年前 评论

@纸牌屋弗兰克 原生php 扩展应该也会支持的 你可以去看下文档

6年前 评论

如果预料到有批量删除的情景,为什么不用 hash 呢...或者加过期时间?这种需求本身就是不太合理的

6年前 评论
jasonjiang123

高版本可以使用pipline

6年前 评论

@雨师 那万一要是 需要批量删除hash呢

6年前 评论

@zhaohehe 批量删 hash 的成本总是低于批量删除 key-value 吧,毕竟数量少一点,但是问题如果是 “如何批量删除 redis 中的key”,那么我的考量可能不适合了,请忽略哈

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!