对redis的keys方法替换
最近公司需要做redis服务的迁移,一些旧项目用的还是以前的jedisAPI。发现有个项目用的keys方法模糊查询,而这在生产环境是绝对禁止的。keys命令的时间复杂度是O(N),可想而知,当面对大量数据时,每个查询会占用更长时间,无法释放链接,从而导致系统的异常。
redis官方的警告:
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.
https://redis.io/commands/keys
官方的建议是使用SCAN(粗浅的理解为keys的分页)或者集合
公司的cacheAPI并没有提供SCAN方法,可能同样是考虑到模糊查询带来的性能问题,那我只能另想办法了。
我当