τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Η λειτουργία "Ανάγνωση μέσω" αναφέρεται γενικά σε μια στρατηγική αποθήκευσης στην κρυφή μνήμη κατά την οποία όταν μια εφαρμογή επιχειρεί να διαβάσει δεδομένα, το σύστημα κρυφής μνήμης ελέγχεται πρώτα για να διαπιστωθεί εάν τα δεδομένα βρίσκονται ήδη στη μνήμη cache. Εάν τα δεδομένα υπάρχουν στην κρυφή μνήμη (δηλαδή επίσκεψη στην κρυφή μνήμη), τα δεδομένα διαβάζονται απευθείας από τη μνήμη cache και επιστρέφονται στην εφαρμογή. Εάν τα δεδομένα δεν υπάρχουν στη μνήμη cache (δηλαδή, μια έλλειψη προσωρινής μνήμης), τα δεδομένα διαβάζονται από τον υποκείμενο χώρο αποθήκευσης δεδομένων (όπως μια βάση δεδομένων), στη συνέχεια φορτώνονται στη μνήμη cache και, τέλος, επιστρέφονται στην εφαρμογή.
Τα κύρια πλεονεκτήματα αυτού του μοντέλου περιλαμβάνουν:
Η λειτουργία Read Through συνήθως έρχεται σε αντίθεση με στρατηγικές όπως Lazy Loading και Eager Loading:
Κατά την εφαρμογή της λειτουργίας Read Through, ίσως θελήσετε να λάβετε υπόψη τα εξής:
Η εφαρμογή του μοτίβου Read Through στο Spring Boot μπορεί συνήθως να επιτευχθεί μέσω της αφαίρεσης Spring Cache. Η Spring Cache παρέχει ένα ενοποιημένο API σε διαφορετικές εφαρμογές κρυφής μνήμης και υποστηρίζει πολλαπλές λύσεις προσωρινής μνήμης, όπως EhCache, Hazelcast, Infinispan, Redis κ.λπ.
Προσθήκη εξαρτήσεων: Αρχικά, πρέπει να προσθέσετε τις εξαρτήσεις προσωρινής μνήμης του Spring Boot και την επιλεγμένη βιβλιοθήκη υλοποίησης προσωρινής μνήμης (όπως το Redis)
- <!-- Spring Boot Starter Cache -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-cache</artifactId>
- </dependency>
-
- <!-- 以Redis为例,添加Redis的Spring Boot Starter -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
Ενεργοποίηση σχολιασμών προσωρινής αποθήκευσης:Προσθήκη στην κλάση διαμόρφωσης Spring Boot@EnableCaching
σχολιασμός για να ενεργοποιήσετε την υποστήριξη σχολιασμού προσωρινής μνήμης.
Διαμόρφωση διαχείρισης προσωρινής μνήμης: Διαμόρφωση ενός ή περισσότερωνCacheManager
, το Spring Boot θα ρυθμίσει αυτόματα ένα απλόCacheManager
, αλλά μπορείτε να διαμορφώσετε πιο σύνθετες στρατηγικές προσωρινής αποθήκευσης εάν χρειάζεται.
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.cache.RedisCacheConfiguration;
- import org.springframework.data.redis.cache.RedisCacheManager;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
-
- @Configuration
- public class RedisCacheConfig {
-
- @Bean
- public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
- RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
- .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.string()))
- .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(GenericJackson2JsonRedisSerializer.json())))
-
- Map<String, RedisCacheConfiguration> customCacheConfigs = new HashMap<>();
- customCacheConfigs.put("mySpecialCache",
- config.entryTtl(Duration.ofMinutes(15))); // 为特定缓存设置不同的过期时间
-
- .disableCachingNullValues();
- return RedisCacheManager.builder(connectionFactory)
- .cacheDefaults(config)
- // 在这里可以自定义添加缓存配置
- .withInitialCacheConfigurations(customCacheConfigs)
- .build();
- }
- }
@Cacheable
Σχολιασμοί για την εφαρμογή της λειτουργίας Ανάγνωσης. Εάν δεν υπάρχουν δεδομένα στη μνήμη cache, η μέθοδος θα κληθεί και το αποτέλεσμα θα αποθηκευτεί προσωρινά.- import org.springframework.cache.annotation.Cacheable;
- import org.springframework.stereotype.Service;
-
- @Service
- public class MyService {
-
- @Cacheable(value = "myCache", key = "#id")
- public MyData getDataById(String id) {
- // 从数据库加载数据
- return myDataRepository.findById(id);
- }
- }
Κλειδί κρυφής μνήμης:υπάρχει@Cacheable
Το κλειδί της κρυφής μνήμης καθορίζεται στον σχολιασμό, ο οποίος συνήθως βασίζεται στην τιμή της παραμέτρου της μεθόδου.
όνομα κρυφής μνήμης: Καθορίστε το όνομα της κρυφής μνήμης, το οποίο θα χρησιμοποιηθεί για τη διάκριση διαφορετικών τομέων κρυφής μνήμης.
Διαμόρφωση παραμέτρων προσωρινής μνήμης: Μπορείτε να διαμορφώσετε το χρονικό όριο λήξης της προσωρινής μνήμης, τις συνθήκες, εκτός εάν οι συνθήκες κ.λπ. απαιτείται
τιμή ή cacheNames : Καθορίστε το όνομα της προσωρινής μνήμης. Μπορείτε να καθορίσετε ένα ή περισσότερα ονόματα κρυφής μνήμης που θα χρησιμοποιηθούν για την αποθήκευση της κρυφής μνήμης.
@Cacheable(value = "myCacheName", key = "#id")
κλειδί : Καθορίστε τη στρατηγική δημιουργίας για τις τιμές κλειδιών της κρυφής μνήμης. Οι εκφράσεις spEL (Spring Expression Language) χρησιμοποιούνται συνήθως για τον καθορισμό παραμέτρων μεθόδου ως κλειδιά κρυφής μνήμης.
@Cacheable(cacheNames = "myCache", key = "#id")
κατάσταση: Καθορίστε τις προϋποθέσεις για αποθήκευση στην κρυφή μνήμη και αποθηκεύστε προσωρινά μόνο όταν πληρούνται οι προϋποθέσεις.
@Cacheable(cacheNames = "myCache", key = "#id", condition = "#id.length() > 3")
εκτός: Ορίστε τις προϋποθέσεις για μη αποθήκευση στην κρυφή μνήμη καιcondition
Αντίθετα, χρησιμοποιείται για να αποκλείσει ορισμένες καταστάσεις.
@Cacheable(cacheNames = "myCache", key = "#id", unless = "#result == null")
keyGenerator: Καθορίστε μια προσαρμοσμένη στρατηγική δημιουργίας κλειδιού προσωρινής μνήμης Εάν χρειάζεστε πιο σύνθετη λογική δημιουργίας κλειδιών, μπορείτε να καθορίσετε αKeyGenerator
Όνομα φασολιού.
@Cacheable(cacheNames = "myCache", keyGenerator = "myKeyGenerator")
cacheManager: Καθορίστε ποιο να χρησιμοποιήσετεCacheManager
, εάν υπάρχουν πολλάCacheManager
όταν χρησιμοποιείται.
@Cacheable(cacheNames = "myCache", cacheManager = "myCacheManager")
expireAfterWrite : Ορίστε το χρόνο λήξης (σε χιλιοστά του δευτερολέπτου) μετά την εγγραφή του στοιχείου της προσωρινής μνήμης. Αυτή είναι μια συνήθως χρησιμοποιούμενη διαμόρφωση για τον καθορισμό της διάρκειας ζωής των δεδομένων προσωρινής αποθήκευσης.
@Cacheable(cacheNames = "myCache", key = "#id", expireAfterWrite = 3600000) // 1小时后过期
expireAfterAccess: Ορίστε τον χρόνο λήξης μετά την τελευταία πρόσβαση του στοιχείου προσωρινής αποθήκευσης, ο οποίος ισχύει για το χρόνο που χρειάζεται για να λήξουν τα αποθηκευμένα δεδομένα μετά την τελευταία πρόσβαση.
refreshAfterWrite: Ορίστε πόσο χρόνο θα ανανεώνεται η προσωρινή μνήμη μετά την εγγραφή, κατάλληλο για σενάρια όπου η προσωρινή μνήμη ανανεώνεται δυναμικά.
συγχρονισμός: Ρυθμίστε εάν θα δημιουργούνται στοιχεία προσωρινής μνήμης συγχρονισμένα για να αποτρέπονται οι συνθήκες αγώνα σε ταυτόχρονα περιβάλλοντα.
Εξαίρεση χειρισμού: Βεβαιωθείτε ότι χειρίζεστε τις εξαιρέσεις που ενδέχεται να περιληφθούν σε μεθόδους προσωρινής μνήμης για να αποφύγετε να επηρεάσετε τη σταθερότητα της εφαρμογής.