当前位置: 首页 > news >正文

做哪个视频网站赚钱的seo知识是什么意思

做哪个视频网站赚钱的,seo知识是什么意思,网站的内容做证据观点,成都网站开发外包在构建大规模应用时,缓存系统是提高性能的关键因素之一。为了更有效地利用缓存,我们可以设计一个基于Spring Boot的多级缓存系统,结合本地内存缓存(如Caffeine)和分布式缓存(如Redis)。以下是一…

在构建大规模应用时,缓存系统是提高性能的关键因素之一。为了更有效地利用缓存,我们可以设计一个基于Spring Boot的多级缓存系统,结合本地内存缓存(如Caffeine)和分布式缓存(如Redis)。以下是一个简单的多级缓存系统的设计概要:

1. 选择缓存框架

在Spring Boot中,我们可以选择合适的缓存框架,比如Ehcache、Redis、Caffeine等。可以通过在pom.xml中引入相应的依赖来集成这些框架。

2. 配置缓存

在application.properties或application.yml中配置缓存的相关属性,如缓存类型、大小、过期时间等。

3. 定义缓存管理类

创建一个缓存管理类,用于配置多级缓存,指定各级缓存的顺序和策略。

package com.nbsaas.boot.config;import com.github.benmanes.caffeine.cache.CaffeineSpec;
import com.nbsaas.boot.cache.MultiLevelCacheManager;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;import java.time.Duration;@Configuration
@EnableCaching
public class CacheConfig {@Primary@Order(Ordered.HIGHEST_PRECEDENCE)@Beanpublic CacheManager cacheManager(CaffeineCacheManager caffeineCacheManager,RedisCacheManager redisCacheManager) {MultiLevelCacheManager multiLevelCacheManager = new MultiLevelCacheManager();multiLevelCacheManager.addCache(caffeineCacheManager);multiLevelCacheManager.addCache(redisCacheManager);return multiLevelCacheManager;}@Beanpublic CaffeineCacheManager caffeineCacheManager() {// 配置Caffeine缓存CaffeineCacheManager cacheManager = new CaffeineCacheManager("caffeineCache","yourCacheName");cacheManager.setCaffeineSpec(caffeineSpec());return cacheManager;}@Order(Ordered.LOWEST_PRECEDENCE)@Beanpublic RedisCacheManager redisCacheManager(RedisConnectionFactory factory) {RedisSerializer<String> redisSerializer = new StringRedisSerializer();GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();// 配置序列化(解决乱码的问题),过期时间600秒RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)).serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).disableCachingNullValues();return RedisCacheManager.builder(factory).cacheDefaults(config).build();}private CaffeineSpec caffeineSpec() {// 配置Caffeine缓存规格return CaffeineSpec.parse("maximumSize=100");}
}

4. 实现缓存管理器和缓存

实现MultiLevelCacheManager类和MultiLevelCache类,用于管理和协调多个缓存层次。


package com.nbsaas.boot.cache;import org.springframework.cache.Cache;import java.util.ArrayList;
import java.util.Collection;
import java.util.concurrent.Callable;public class MultiLevelCache implements Cache {private final ArrayList<Cache> caches = new ArrayList<>();public void addCache(Cache cache) {caches.add(cache);}@Overridepublic String getName() {return "multiLevelCache";}@Overridepublic Object getNativeCache() {return this;}@Overridepublic ValueWrapper get(Object key) {for (Cache cache : caches) {ValueWrapper wrapper = cache.get(key);if (wrapper != null) {return wrapper;}}return null;}@Overridepublic <T> T get(Object key, Class<T> type) {ValueWrapper wrapper = get(key);return (wrapper != null) ? (T) wrapper.get() : null;}@Overridepublic <T> T get(Object key, Callable<T> valueLoader) {ValueWrapper wrapper = get(key);T obj= (wrapper != null) ? (T) wrapper.get() : null;return obj;}@Overridepublic void put(Object key, Object value) {for (Cache cache : caches) {cache.put(key, value);}}@Overridepublic ValueWrapper putIfAbsent(Object key, Object value) {ValueWrapper wrapper = get(key);if (wrapper == null) {put(key, value);return null;}return wrapper;}@Overridepublic void evict(Object key) {for (Cache cache : caches) {cache.evict(key);}}@Overridepublic boolean evictIfPresent(Object key) {return Cache.super.evictIfPresent(key);}@Overridepublic void clear() {for (Cache cache : caches) {cache.clear();}}@Overridepublic boolean invalidate() {boolean result=true;for (Cache cache : caches) {result= cache.invalidate();}return result;}
}

package com.nbsaas.boot.cache;import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;import java.util.ArrayList;
import java.util.Collection;public class MultiLevelCacheManager implements CacheManager {private final ArrayList<CacheManager> cacheManagers = new ArrayList<>();public static final int REDIS_CACHE_EXPIRATION = 600; // Redis缓存过期时间(秒)public void addCache(CacheManager cacheManager) {cacheManagers.add(cacheManager);}@Overridepublic Cache getCache(String name) {MultiLevelCache multiLevelCache = new MultiLevelCache();for (CacheManager cacheManager : cacheManagers) {Cache cache = cacheManager.getCache(name);if (cache != null) {multiLevelCache.addCache(cache);}}return multiLevelCache;}@Overridepublic Collection<String> getCacheNames() {Collection<String> cacheNames = new ArrayList<>();for (CacheManager cacheManager : cacheManagers) {cacheNames.addAll(cacheManager.getCacheNames());}return cacheNames;}
}

5. 使用缓存

在Service层或方法上使用@Cacheable、@CachePut、@CacheEvict等注解来标记需要缓存的方法。

@Service
public class MyService {@Cacheable(value = "caffeineCache", key = "#id")public String getCachedData(String id) {// 查询数据库或其他业务逻辑return "Cached Data for " + id;}
}

通过以上步骤,我们成功建立了一个基于Spring Boot的多级缓存系统。这个设计支持在本地内存和分布式缓存之间实现多级缓存,从而更好地满足不同场景下的性能需求。在实际应用中,可以根据具体需求调整缓存的层次和配置,以达到最佳性能和资源利用率。

http://www.hkea.cn/news/397297/

相关文章:

  • 互联网企业网站网络优化
  • 山东手工活外发加工网四川二级站seo整站优化排名
  • 行业门户网站开发百度竞价怎么做效果好
  • 适合前端做项目的网站百度网盘搜索
  • 下载网站怎么下载广州网站定制多少钱
  • 西安攻略旅游自由行怎么玩北京seo软件
  • 汉川网站建设sem代运营
  • 装酷网装修平台东莞seo外包
  • 专门做图片的网站吗如何建网站要什么条件
  • 卢氏县住房和城乡建设局网站站长统计 站长统计
  • 济南 网站制作旺道营销软件
  • 新上线网站如何做搜索引擎站长素材网站
  • 做网站编辑深圳疫情防控最新消息
  • PHP网站开发项目式教程google下载手机版
  • 国外专门用于做网站图片的做网站要多少钱
  • 网站维护费用计入什么科目媒介星软文平台官网
  • 网站建设seo 视频做网站哪个平台好
  • 旅行社网站建设方案论文百度seo公司
  • 长沙网站建设与维护百度开户联系方式
  • 做pcr查基因序列的网站南京百度网站快速优化
  • 数据服务网站策划方案关键词快速优化排名软件
  • 响应式网站缺点学大教育培训机构电话
  • 江苏天德建设工程有限公司网站一个平台怎么推广
  • 石家庄做网络推广的网站推广平台收费标准
  • 贵阳天柱网站建设招聘域名注册平台有哪些
  • 网站建设电话营销百度问一问官网
  • 网站优化建设河南怎么关闭seo综合查询
  • 自贡做响应式网站开发公司google搜索引擎入口google
  • 东莞哪种网站推广好微信朋友圈推广文案
  • 现在学做网站赚钱吗东莞市优速网络科技有限公司