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.
关于 LearnKu
这个管道的本质也是一个个去删,和代码里用循环删是一个效果
@leo 假如这个分组下有几百上千个键,循环删效率太低了
是一种思路
@纸牌屋弗兰克 redis上万个键删起来0.1秒都不到吧
@我是谁 这个取决于本地与 redis 服务器的网络延迟
支持的
大概长这样
@zhaohehe 什么包,predis吗?
@纸牌屋弗兰克 原生php 扩展应该也会支持的 你可以去看下文档
如果预料到有批量删除的情景,为什么不用 hash 呢...或者加过期时间?这种需求本身就是不太合理的
高版本可以使用pipline
@雨师 那万一要是 需要批量删除hash呢
@zhaohehe 批量删 hash 的成本总是低于批量删除 key-value 吧,毕竟数量少一点,但是问题如果是 “如何批量删除 redis 中的key”,那么我的考量可能不适合了,请忽略哈