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

如 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.

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 12
leo

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

1年前

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

1年前
丁海军

是一种思路

1年前

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

1年前
leo

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

1年前

支持的

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

大概长这样

1年前

@zhaohehe 什么包,predis吗?

1年前

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

1年前

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

1年前
jasonjiang123

高版本可以使用pipline

1年前

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

1年前

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

1年前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!