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

电子商务网站建设教程黑河建设网站

电子商务网站建设教程,黑河建设网站,济南哪家做网站,企业网站推广的方法包括在构建大规模应用时#xff0c;缓存系统是提高性能的关键因素之一。为了更有效地利用缓存#xff0c;我们可以设计一个基于Spring Boot的多级缓存系统#xff0c;结合本地内存缓存#xff08;如Caffeine#xff09;和分布式缓存#xff08;如Redis#xff09;。以下是一…在构建大规模应用时缓存系统是提高性能的关键因素之一。为了更有效地利用缓存我们可以设计一个基于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 {PrimaryOrder(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) {RedisSerializerString 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(maximumSize100);} } 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 ArrayListCache 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, ClassT type) {ValueWrapper wrapper get(key);return (wrapper ! null) ? (T) wrapper.get() : null;}Overridepublic T T get(Object key, CallableT 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 resulttrue;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 ArrayListCacheManager 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 CollectionString getCacheNames() {CollectionString 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.w-s-a.com/news/400384/

相关文章:

  • 网站开发项目规划房地产趋势与前景
  • 网上网站开发这个百度的网站怎么做的
  • 南昌市建设局官方网站网龙网络公司地址
  • 自助建站平台源码公司网站谁负责做
  • 旅游的网站怎么做网站流量的主要来源有
  • 高新网站设计找哪家网络科技有限公司实习报告
  • 专业网站建设质量推荐网络销售是做网站推广
  • 旅游网站建设模板wordpress最好最全的教程
  • 网站站长在哪登陆后台网站设计一年费用
  • 济南比较好的网站建设公司邢台信息网123
  • 双峰网站建设漳州优化网站建设
  • app和网站开发的成本虚拟主机是啥
  • 想做一个自己设计公司的网站怎么做的销售培训
  • 南昌网站建设模板合作凡客app哪去了
  • 有免费做网站的吗建设互联网站
  • 北京市保障房建设投资中心网站淄博哪个网站做房屋出赁好
  • 如何做网站的优化网站开发怎么收费
  • 网站的关键词怎么选择2345实用查询
  • 免费的制作网站做图剪片文案网站app接单
  • 中国有多少网站有多少域名上海网站建设网页制作邢台
  • 网站 数据报表如何做室内设计联盟官方网站入口
  • 怎样建设网站论文合肥做网站的软件公司
  • 收款后自动发货的网站是怎么做的怎么看网站后台网页尺寸
  • 谷歌seo引擎优化宁波seo关键词
  • 外贸网站建设需要注意什么seo课程
  • 做信息图网站网站建设的软件介绍
  • 网站开发语言数据库有几种魏县审批建设的网站
  • 北京公司网站建设推荐海口建设
  • 不懂编程如何做网站婚礼网站模板
  • 像京东一样的网站wordpress入门视频教程7 - 如何在文章里加入视频和音乐