最近项目中需要获取指定前缀的key, 然后删除这些key, 作为对redis命令不太深入了解的我第一想法就是redis的keys命令, 只需keys prefix + * 就可以了, 在测试环境这样开发没有问题, 由于项目对redis依赖比较大, 就网上找了一些关于redis的keys命令, 得知keys命令执行的时候会严重阻塞线上其它命令的正常请求, 于是做了以下替代方案.
Redis是单线程处理,keys命令在KEY数量较多时,操作效率极低【时间复杂度为O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求. 经测试, 效果和keys一样