RuoYi-Vue-Plus配置查询:缓存管理

RuoYi-Vue-Plus配置查询:缓存管理

【免费下载链接】RuoYi-Vue-Plus 多租户后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-Token、Mybatis-Plus、Warm-Flow工作流、SpringDoc、Hutool、OSS 定期同步 【免费下载链接】RuoYi-Vue-Plus 项目地址: https://gitcode.com/dromara/RuoYi-Vue-Plus

概述

RuoYi-Vue-Plus作为一款强大的多租户后台管理系统,在缓存管理方面提供了完善的解决方案。系统采用多级缓存架构,整合了Redis分布式缓存和Caffeine本地缓存,通过Spring Cache抽象层提供统一的缓存操作接口。本文将深入解析系统的缓存配置、使用方式和最佳实践。

缓存架构设计

多级缓存架构

mermaid

核心组件说明

组件类型作用配置位置
PlusSpringCacheManager缓存管理器统一管理多级缓存ruoyi-common-redis
RedisUtils工具类Redis操作工具ruoyi-common-redis
CacheUtils工具类Spring Cache操作工具ruoyi-common-redis
CacheConfig配置类缓存全局配置ruoyi-common-redis

核心配置详解

1. 缓存配置类

@AutoConfiguration
@EnableCaching
public class CacheConfig {

    @Bean
    public Cache<Object, Object> caffeine() {
        return Caffeine.newBuilder()
            .expireAfterWrite(30, TimeUnit.SECONDS)  // 写入后30秒过期
            .initialCapacity(100)                    // 初始容量100
            .maximumSize(1000)                       // 最大容量1000
            .build();
    }

    @Bean
    public CacheManager cacheManager() {
        return new PlusSpringCacheManager();  // 自定义缓存管理器
    }
}

2. Redis工具类核心方法

RedisUtils提供了丰富的Redis操作方法:

// 基本对象缓存
RedisUtils.setCacheObject("user:1", user);  // 设置缓存
User user = RedisUtils.getCacheObject("user:1");  // 获取缓存
RedisUtils.deleteObject("user:1");  // 删除缓存

// 列表操作
RedisUtils.setCacheList("user:list", userList);
List<User> users = RedisUtils.getCacheList("user:list");

// 哈希操作
RedisUtils.setCacheMapValue("user:map", "key1", value);
Object value = RedisUtils.getCacheMapValue("user:map", "key1");

// 原子操作
RedisUtils.incrAtomicValue("counter");  // 原子递增

3. Spring Cache工具类

// 使用Spring Cache抽象
CacheUtils.put("userCache", "user:1", user);  // 保存缓存
User user = CacheUtils.get("userCache", "user:1");  // 获取缓存
CacheUtils.evict("userCache", "user:1");  // 删除单个缓存
CacheUtils.clear("userCache");  // 清空缓存组

缓存注解使用

1. @Cacheable - 缓存查询

@Cacheable(cacheNames = "sys:user", key = "#userId")
public SysUser getUserById(Long userId) {
    return userMapper.selectById(userId);
}

2. @CachePut - 缓存更新

@CachePut(cacheNames = "sys:user", key = "#user.userId")
public SysUser updateUser(SysUser user) {
    userMapper.updateById(user);
    return user;
}

3. @CacheEvict - 缓存清除

@CacheEvict(cacheNames = "sys:user", key = "#userId")
public void deleteUser(Long userId) {
    userMapper.deleteById(userId);
}

4. 缓存命名规则

系统支持灵活的缓存命名规则:

// 格式: cacheName#过期时间#最大空闲时间#最大数量#是否缓存空值
@Cacheable(cacheNames = "demo:cache#60s#10m#20#1", key = "#key")

缓存监控管理

缓存监控接口

系统提供了缓存监控功能,可通过以下接口获取缓存状态:

@RestController
@RequestMapping("/monitor/cache")
public class CacheController {
    
    @GetMapping()
    public R<CacheListInfoVo> getInfo() {
        // 获取Redis连接信息、数据库大小、命令统计等
    }
}

监控指标说明

指标说明获取方式
数据库大小Redis中key的数量connection.dbSize()
内存使用Redis内存使用情况connection.info()
命令统计各命令调用次数connection.info("commandstats")

最佳实践指南

1. 缓存键设计规范

// 良好的缓存键设计
String cacheKey = "module:entityType:tenantId:entityId";
// 示例: user:sys:1:1001 表示租户1的用户1001

2. 缓存失效策略

// 组合使用多种失效策略
@Caching(
    evict = {
        @CacheEvict(cacheNames = "user:detail", key = "#userId"),
        @CacheEvict(cacheNames = "user:list", allEntries = true)
    }
)

3. 缓存穿透防护

// 使用空值缓存防止缓存穿透
@Cacheable(cacheNames = "user#60s#1", key = "#userId", 
           condition = "#result != null", unless = "#result == null")

4. 多租户缓存隔离

// 自动添加租户前缀
String tenantKey = TenantContext.getTenantId() + ":" + key;
RedisUtils.setCacheObject(tenantKey, value);

常见问题排查

1. 缓存不生效检查清单

mermaid

2. 性能优化建议

  • 本地缓存:高频读取数据使用Caffeine本地缓存
  • 批量操作:使用RBatch进行批量Redis操作
  • 连接池:合理配置Redisson连接池参数
  • 序列化:选择高效的序列化方式(推荐Jackson)

配置参数参考

Redis连接配置

spring:
  redis:
    redisson:
      config: |
        singleServerConfig:
          address: "redis://127.0.0.1:6379"
          connectionPoolSize: 64
          connectionMinimumIdleSize: 24
          idleConnectionTimeout: 10000
          connectTimeout: 10000
          timeout: 3000
          retryAttempts: 3
          retryInterval: 1500

缓存策略配置

# 本地缓存配置(通过代码配置)
caffeine:
  expire-after-write: 30s
  initial-capacity: 100
  maximum-size: 1000

总结

RuoYi-Vue-Plus的缓存管理系统提供了完整的企业级缓存解决方案,通过多级缓存架构、灵活的注解支持和完善的监控功能,能够有效提升系统性能。开发者可以根据业务需求选择合适的缓存策略,结合最佳实践指南进行配置和优化。

关键要点:

  • 采用Redis + Caffeine多级缓存架构
  • 提供统一的缓存操作工具类
  • 支持灵活的缓存注解配置
  • 内置缓存监控和管理功能
  • 提供多租户缓存隔离支持

通过合理配置和使用缓存,可以显著提升系统响应速度和并发处理能力,为大型企业应用提供稳定的性能保障。

【免费下载链接】RuoYi-Vue-Plus 多租户后台管理系统 重写RuoYi-Vue所有功能 集成 Sa-Token、Mybatis-Plus、Warm-Flow工作流、SpringDoc、Hutool、OSS 定期同步 【免费下载链接】RuoYi-Vue-Plus 项目地址: https://gitcode.com/dromara/RuoYi-Vue-Plus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值