You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Redis缓存内存级过期设置咨询:Redisson是否可行?

Redisson实现Spring Redis Cache二级缓存(内存+Redis)

Redisson完全可以满足你的需求,它提供的LocalCachedMap特性,能轻松实现「本地内存缓存 + Redis分布式缓存」的二级缓存机制,正好适配你不想每次调用@Cacheable方法都访问Redis的场景。

核心实现步骤

1. 配置Redisson客户端与本地缓存策略

在Redisson配置类中,开启本地缓存并设置过期时间:

@Configuration
public class RedissonConfig {

    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config();
        // 配置Redis连接(以单节点为例)
        config.useSingleServer().setAddress("redis://localhost:6379");
        
        // 配置本地缓存参数
        LocalCachedMapOptions<Object, Object> localCacheOpts = LocalCachedMapOptions.defaults()
                // 设置本地缓存过期时间为5分钟,匹配Redis数据的不变周期
                .timeToLive(5, TimeUnit.MINUTES)
                // 限制本地缓存最大条目数,避免内存溢出
                .maxSize(1000)
                // 可选:指定用Caffeine作为本地缓存实现,提升性能
                .cacheProvider(CacheProvider.CAFFEINE);
        
        config.setCodec(new MapCacheCodec(StringCodec.INSTANCE, localCacheOpts));
        return Redisson.create(config);
    }
}

2. 配置Spring Cache使用Redisson缓存管理器

将Redisson集成到Spring Cache体系中:

@Configuration
@EnableCaching
public class SpringCacheConfig {

    @Autowired
    private RedissonClient redissonClient;

    @Bean
    public CacheManager cacheManager() {
        return new RedissonSpringCacheManager(redissonClient);
    }
}

3. 业务方法中使用@Cacheable注解

依然用Spring原生注解标记缓存方法,无需额外改动:

@Service
public class DataService {

    @Cacheable(value = "dataCache", key = "#id")
    public Data getDataById(Long id) {
        // 从数据库/数据源获取数据的逻辑
        return dataRepository.findById(id).orElse(null);
    }
}

关键特性说明

  • 本地缓存优先:5分钟内调用缓存方法时,直接从本地内存取数据,完全不访问Redis。
  • 自动缓存同步(可选):如果Redis中的数据意外在5分钟内变更,可通过配置同步策略(如INVALIDATE)自动失效本地缓存,避免脏数据。
  • 内存安全:通过maxSize限制本地缓存容量,超出后自动按LRU策略淘汰旧条目,防止内存占用过高。

内容的提问来源于stack exchange,提问作者Pavel Hora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:05:26