如果对大家有用,请点赞收藏支持,如果无用请多多包含!!!!
非常感谢!!!
一、首先我们了解一下KEYS键
Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout. Don't use KEYS in your regular application code. If you're looking for a way to find keys in a subset of your keyspace, consider using SCAN or sets.
上面一段应用是来之redis官方对keys使用的警告⚠。
Redis Keys 命令用于查找所有符合给定模式 pattern 的 key ,很多时候我们可以使用keys做到一些统计及缓存的批量处理,但是为什么官方会警告说该命令不建议使用再生成环境呢?
二、为什么不建议使用KEYS命令
我是这样理解的,在使用keys命令的时候,如果单体应用或者key极少的情况下,其实是没有什么问题的。
如果key非常多,并且redis使用在了有集群的场景下,keys命令造成数据阻塞时间较长的话,风险可想而知了。
三、为什么会出现(error) ERR unknown command `keys`, with args beginning with: `*`错误
这是因为运维人员将Redis危险命令进行了禁用屏蔽,具体生成都需要屏蔽哪些危险命令呢,我在网络上查找了一下:
ename-command FLUSHALL "" #将命令改名成空
rename-command FLUSHDB "" #将命令改名成空
rename-command KEYS "" #将命令改名成空