使用Jedis客户端时出现OOM异常
# 问题描述
使用Jedis客户端时,出现OOM command not allowed when used memory > ‘maxmemory’异常。
这种异常代表Redis节点使用内存容量超过该实例的内存规格(maxmemory配置)。造成这个问题的原因可能有以下几种:
- 业务数据量增加,超过了规格内存。
- 客户端缓冲区异常,如monitor、pub/sub使用不当等等。
- 纯缓存使用场景下,maxmemory-policy配置有误(例如没有设置过期键的业务配置volatile-lru)。
# 解决方案
1、临时调整maxmemory。
2、查看Redis实例是否负载过高(如果是集群版实例,需要查看每个分片是否负载过高)。如果存在大key,请分析获取大key。获取和优化大key,详情参见如何处理大key问题。
3、确认内存增大的原因,根据自身业务场景解决问题。
4、根据业务数据量判断是否需要升配,咨询工作人员是否需要调整配置。