Technology sharing

SpringBoot instrumentis perlege modum

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Introductio

Perlege modum generaliter refert ad consilium caching, in quo cum applicationis notitias legere tentat, primum systema cella deprimitur videre an iam in cella data sit. Si notitia in cella (i.e. hit) notitia ex cella legatur et ad applicationem redierit. Si notitia in cella non est (i.e., cella miss), notitia e notitia copia substrata (ut datorum datorum), deinde in cella onusta, et tandem ad applicationem rediit.

Praecipua commoditates huius exemplaris sunt:

  1. Improve perficientur: Persecutio notitiarum retrievalium signanter emendari potest reducendo numerum accessuum directarum ad substratam repositam.
  2. Reduce latency: Latibulum proprie in memoria positum est et multo citius accessi potest quam repositio orbis, ita reducendo latentiam notitiarum retrievalium.
  3. Reduce database onus: Cum saepe accessu data in cella reponenda, quaestio pressionis datorum minui potest, eo quod perput totius systematis emendatur.

Perlege modo consuevit cum strategies opponi ut Piger Loading et Studiosus Loading:

  • piger Loading: Data nonnisi onerata cum opus sunt, quae necessarias notitias onerantium minuunt, sed latentiam in primo accessu augere possunt.
  • Loading cupidus: Preload data, quae primum accessum latency minuere potest, sed memoriam applicationis usui ac temporis initium augere potest.

Cum exsequendo perlege modo, sequentia considerare velis:

  • Cache infirmationis belli: Determinare quando notitias e cella removere, ut temporis fundatum (TTL) vel spatii fundatum (cum cella ad certam magnitudinem pervenit).
  • Concurrency imperium: Rem tractamus in qua multae applicationes instantiae accesserunt et simul cache modificant.
  • notitia constantia: Cura ut notitia in cella cohaereat cum notitia in repositione subiecta, praesertim cum notitia renovata est.

efficere

Exsequens Read Per exemplum in Ver Booz plerumque perfici potest per abstractionem fontis Cache. Ver Cache una API trans varias exsecutiones cache praebet et plures solutiones cache sustinet, ut EhCache, Hazelcast, Infinispan, Redis, etc.

  1. Dependentias adde: Primum, debes clientelas fontis Boot addere et selectas bibliothecas cache exsequendas (ut Redis)

    1. <!-- Spring Boot Starter Cache -->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-cache</artifactId>
    5. </dependency>
    6. <!-- 以Redis为例,添加Redis的Spring Boot Starter -->
    7. <dependency>
    8. <groupId>org.springframework.boot</groupId>
    9. <artifactId>spring-boot-starter-data-redis</artifactId>
    10. </dependency>
  2. Admitte cache annotationes: Adde de configuratione genus Tabernus Spring@EnableCachingannotationem ad enable annotationem cache auxilio.

  3. Configurare cache procurator: Configurare velCacheManager, Ver Boot sponte configurare simplicemCacheManager, sed magis implicatas stragulas machinas, si opus fuerit, configurare potes.

    1. import org.springframework.context.annotation.Bean;
    2. import org.springframework.context.annotation.Configuration;
    3. import org.springframework.data.redis.cache.RedisCacheConfiguration;
    4. import org.springframework.data.redis.cache.RedisCacheManager;
    5. import org.springframework.data.redis.connection.RedisConnectionFactory;
    6. @Configuration
    7. public class RedisCacheConfig {
    8. @Bean
    9. public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
    10. RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
    11. .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.string()))
    12. .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(GenericJackson2JsonRedisSerializer.json())))
    13. Map<String, RedisCacheConfiguration> customCacheConfigs = new HashMap<>();
    14. customCacheConfigs.put("mySpecialCache",
    15. config.entryTtl(Duration.ofMinutes(15))); // 为特定缓存设置不同的过期时间
    16. .disableCachingNullValues();
    17. return RedisCacheManager.builder(connectionFactory)
    18. .cacheDefaults(config)
    19. // 在这里可以自定义添加缓存配置
    20. .withInitialCacheConfigurations(customCacheConfigs)
    21. .build();
    22. }
    23. }
  4. Uti cache annotationes: Usus in modis qui caching requirunt@Cacheable Annotationes ad efficiendum perlege modum. Si nulla notitia in cella est, modus vocabitur et eventus conditivo erit.
    1. import org.springframework.cache.annotation.Cacheable;
    2. import org.springframework.stereotype.Service;
    3. @Service
    4. public class MyService {
    5. @Cacheable(value = "myCache", key = "#id")
    6. public MyData getDataById(String id) {
    7. // 从数据库加载数据
    8. return myDataRepository.findById(id);
    9. }
    10. }
  5. Clavis Cache: exist@CacheableClavis latibulum in annotatione specificata est, quae plerumque ex moduli methodi valore nititur.

  6. nomen cache: Specificare nomen cache, quod ad varias ditiones cache distinguendas adhibebitur.

  7. Configurare parametri cache: Configurare potes cache timeout, conditiones, nisi conditiones, prout opus fuerit etc

    1. valorem vel cacheNames : Nomen cache specificare. Unum vel plura nomina cache nominare potes quae ad thesaurum thesaurum adhibebuntur.

      @Cacheable(value = "myCacheName", key = "#id")
    2. clavis : Definire generationem militaris pro clavis valoribus cache. Locutiones spEL (Versus elocutionis lingua) solent uti modum parametri specificare sicut claves cache.

      @Cacheable(cacheNames = "myCache", key = "#id")
    3. conditio: Definire condiciones caching, et cache tantum cum condiciones convenirent.

      @Cacheable(cacheNames = "myCache", key = "#id", condition = "#id.length() > 3")
    4. nisi: Definire conditiones non caching, andconditionSed ponitur certis adiunctis excluditur.

      @Cacheable(cacheNames = "myCache", key = "#id", unless = "#result == null")
    5. keyGenerator: Cache clavem generationis designare consuetudinem belliKeyGeneratorFaba nomen.

      @Cacheable(cacheNames = "myCache", keyGenerator = "myKeyGenerator")
    6. cacheManager: Specificare quod unum ad usumCacheManagersi plures suntCacheManagerquo usus est.

      @Cacheable(cacheNames = "myCache", cacheManager = "myCacheManager")
    7. expireAfterWrite : Expitionis tempus pone (in milliseconds) post cella scriptum est. Haec communis figura adhibetur ad vitam conditarum notitiarum definiendam.

      @Cacheable(cacheNames = "myCache", key = "#id", expireAfterWrite = 3600000) // 1小时后过期
    8. expireAfterAccessPone tempus respirandi post ultimum accessum cellae item, quod applicatur ad quam diu sumitur pro notitia conditivo post novissimum accessum exspirandi.

    9. refreshafterWrite: Pone quam diu perscriptum est ad recreandum cella, ad missiones idoneas ubi cella alacriter reficitur.

    10. syncPone an synchrone creare res cachexia ad praecavendas condiciones generis in ambitus concurrentes.

  8. Exceptio pertractatio: Fac ut exceptiones tractandas quae in cache modos obici possunt ad stabilitatem applicationis ad vitandum.