1. 大量创建RMapCache存在OOM的风险
RedissonMapCache对象用完后,会被自动回收,但是EvictionScheduler 中注册的清理任务会继续保留,这就导致如果大量创建RedissonMapCache,清理任务的task会不断累计,可能会导致内存占用很高,甚至OOM,可以参考下面的测试代码。

本地通过掉接口创建了14000个RMapCache,在EvictionScheduler 里也堆积了14000个task
2. RMapCache缓存增长速度过快可能会导致清理速度跟不上创建速度
RMapCache在redis中默认的最大清理速度为20条/s(每5秒清理100条数据),如果缓存创建速度过快,可能会出现清理速度比不上增加的速度,
解决方案:可以通过调整下面几个参数来加速清理(这三个配置同时会影响JCache, RSetCache, RClusteredSetCache, RMapCache, RListMultimapCache, RSetMultimapCache, RLocalCachedMapCache, RClusteredLocalCachedMapCache等)
minCleanUpDelay --- 最小清理间隔时间,默认为 5s
maxCleanUpDelay --- 最大清理间隔时间,默认为 1800s
cleanUpKeysAmount --- 一个批次最大清理数数量,默认为100
3. redis cluster部署,RMapCache占用大,可能会导致数据分布不均匀
RMapCache是的数据是存储在redis的hash数据结构内,对应redis的一个key,如果缓存的数据过大,会产生一个big key,并且如果是redis cluster模式部署,这个时候,单个key sharding后存储的那个redis相对容易会出现更多的内存占用。
解决方案:业务上合理规划RMapCache的颗粒度,尽可能均匀地拆分单个大RMapCache。