keys命令的用法:
keys pattern
查找符合正则匹配的key的列表。扫描对象是Redis服务中所有的key,想想都很慢对不对?
同时执行keys命令的同时,Redis进程将被阻塞,无法执行其他命令,假如超过了哨兵的down-after-milliseconds配置,还会进行主从切换,切换过程中,如果主节点恢复正常,还可能出现脑裂等一系列问题。
所以,生产环境中,建议直接禁用keys命令。
Keys命令的替代方案
- scan扫描,避免阻塞
- 将需要统计的数据放入一个set中 (但是这样可能出现Big Key问题,一般数据量大就不推荐)
Keys命令在Redis Cluster中是怎样执行的?
一般来说,keys命令对于集群节点来说,是不知道路由到哪个节点的,不像 get命令。在Java的Jedis客户端的JedisClusterKeyCommands类中,我们看到: