关于keys命令
为什么使用keys命令遍历所有key不可取?
1. 相对于其他操作来讲,遍历所有key是一个耗时的操作
2. redis是一个单线程的程序,一个操作的阻塞,就会影响其他操作的执行
3. keys操作并不是匹配一个就输出一个的,而是都匹配出来之后才输出的;虽然没有copy每个匹配到的key,也就是说没有占用额外的服务器的内存,但是:
如果client端允许一边接收一边处理的话,则势必阻塞server端的操作;如果client端接收完再操作,则可能会消耗很多client端的内存。如果可以的话,大数据量似乎只能先暂存到磁盘了。
从根本上来讲,这似乎是redis的单线程机制造成的。