对redis的keys方法替换

在将redis服务迁移过程中,发现一个项目使用了keys命令进行模糊查询,该操作在生产环境中可能导致性能下降。redis官方推荐使用SCAN或集合代替。由于公司API未提供SCAN,提出了两种解决方案:1. 将模糊查询key存储在集合中,缺点是增加内存占用;2. 数据归类存储在集合,增加冗余属性,减少内存使用。最终选择了第一种方案,适用于数据量不大且需要兼容旧数据的情况。
摘要由CSDN通过智能技术生成

对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方法,可能同样是考虑到模糊查询带来的性能问题,那我只能另想办法了。

我当

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值