SKILL.md 1.7 KB

数据缓存最佳实践

概述

对于频繁访问且数据量不大的表,应使用缓存机制提高性能。

缓存原则

  1. 适合缓存的表特征

    • 数据量小(通常少于1000条记录)
    • 访问频率高
    • 更新频率低
    • 作为基础配置数据使用
  2. 缓存策略

    • 应用启动时预加载数据
    • 使用ConcurrentHashMap保证线程安全
    • 提供刷新缓存的方法
    • 使用懒加载模式按需初始化

实现模板

@Component
public class CacheService {
    private static Map<Integer, DataType> cacheMap = new ConcurrentHashMap<>();
    private static boolean isInitialized = false;
    
    @Autowired
    private RepositoryType repository;
    
    @PostConstruct
    public void initCache() {
        loadDataToCache();
    }
    
    public synchronized void refreshCache() {
        cacheMap.clear();
        loadDataToCache();
    }
    
    private void loadDataToCache() {
        List<DataType> dataList = repository.findAll();
        cacheMap = dataList.stream()
            .collect(Collectors.toConcurrentMap(DataType::getKeyField, Function.identity()));
        isInitialized = true;
    }
    
    public DataType getByKey(Integer key) {
        if (!isInitialized) {
            synchronized (CacheService.class) {
                if (!isInitialized) {
                    loadDataToCache();
                }
            }
        }
        return cacheMap.get(key);
    }
}

适用场景示例

  • 字典表数据
  • 作业类型设置
  • 配置参数表
  • 基础业务规则表

注意事项

  • 确保缓存数据的一致性
  • 在源数据更新时同步更新缓存
  • 考虑内存占用和垃圾回收
  • 使用合适的并发容器保证线程安全