All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.biz.cache.redis.manager.BizRedisCacheLocalManager Maven / Gradle / Ivy

Go to download

BizX 是一个灵活而高效的业务开发框架, 其中也有很多为业务开发所需要的工具类的提供。

The newest version!
package com.biz.cache.redis.manager;

import com.biz.cache.redis.cache.BizRedisCacheEntity;
import com.biz.cache.redis.loader.BizRedisCacheLoader;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/**
 * Redis缓存本地管理器,实现BizRedisCacheManager接口。
 * 

* 该类负责管理Redis缓存实体,在Spring Boot自动配置的条件下激活。 * * @author francis * @since 1.0.1 **/ @ConditionalOnProperty(value = "biz.cache.redis-cache", havingValue = "true") public class BizRedisCacheLocalManager implements BizRedisCacheManager { /** * 使用ConcurrentMap来存储Redis缓存实体,以保证线程安全。 * 初始化容量为32,以提高并发性能。 */ private static final ConcurrentMap CAFFEINE_CACHE_CONCURRENT_MAP = new ConcurrentHashMap<>(32); /** * 获取所有缓存实体。 * * @return 所有缓存实体的集合。 */ @Override public Collection getAll() { return CAFFEINE_CACHE_CONCURRENT_MAP.values(); } /** * 根据提供的BizRedisCacheLoader列表初始化缓存实体集合。 * 此方法被Spring Boot自动配置为一个Bean。 * * @param redisCacheEntityList Redis缓存实体的列表。 * @return 初始化后的缓存实体集合。 */ @Bean private Collection bizRedisCacheList(List redisCacheEntityList) { for (BizRedisCacheLoader bizRedisCacheLoader : redisCacheEntityList) { this.convertAndCheckCacheNameAndSave(bizRedisCacheLoader.getCaches()); } return CAFFEINE_CACHE_CONCURRENT_MAP.values(); } /** * 将给定的Redis缓存实体列表转换并保存到ConcurrentMap中。 * 此方法用于验证和保存Redis缓存配置。 * * @param redisCacheList 待保存的Redis缓存实体列表。 */ private void convertAndCheckCacheNameAndSave(List redisCacheList) { for (BizRedisCacheEntity bizRedisCacheEntity : redisCacheList) { CAFFEINE_CACHE_CONCURRENT_MAP.put(bizRedisCacheEntity.getCacheName(), bizRedisCacheEntity); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy