Spring Cloud 2.x serisinin bahar bulutunda yay önbelleği nasıl kullanılır

Springcloud'un veri tabanını eklemek, silmek, değiştirmek ve kontrol etmek için nasıl çalıştırdığını ve springcloud'un verileri redis'te depolamak için reaktifleri nasıl çalıştırdığını öğrendi. Bugün, veritabanı işlemleri ve reids işlemleri ile birlikte, SpringCache'nin nasıl kullanılacağına bir göz atalım. SpringCache, açıklama tabanlı bir önbellek yapılandırma yöntemi sağlar. Esasen belirli bir önbellek uygulama şeması (EHCache gibi) değil, önbellek kullanımının bir soyutlaması ve kapsüllenmesidir.Varolan koda önceden tanımlanmış birkaç yorum ekleyerek, istenen önbellek etkisi elde edilebilir. SpringCache, EHCache ve Redis gibi üçüncü taraf önbellekleriyle entegrasyonu destekler; ayrıca doğrudan kullanılabilen, kutunun dışında varsayılan bir uygulama sağlar. SpringCache, önbellek anahtarını ve çeşitli koşulları tanımlamak için SpEL (Spring Expression Language) kullanımını destekler, bu nedenle önemli ölçüde esnekliğe sahiptir ve çok karmaşık semantiği destekleyebilir.

1. Yeni bir proje sc-redis-cache oluşturun ve kullanılan pom.xml dosyası aşağıdaki gibidir

< proje xmlns = " xmlns: xsi = " xsi: schemaLocation = "http: // maven.apache.org/POM/4.0.0 " >

< modelVersion > 4.0.0 < / modelVersion >

< Grup kimliği > bahar bulutu < /Grup kimliği >

< artifactId > sc-redis-önbelleği < / artifactId >

< versiyon > 0.0.1-SNAPSHOT < / version >

< ambalaj > kavanoz < / paketleme >

< isim > sc-redis-önbelleği < / isim >

< url > < / url >

< ebeveyn >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > Spring-boot-starter-ebeveyn < / artifactId >

< versiyon > 2.0.4. YAYIN < / version >

< / ebeveyn >

< bağımlılık yönetimi >

< bağımlılıklar >

< bağımlılık >

< Grup kimliği > org.springframework.cloud < /Grup kimliği >

< artifactId > bahar-bulutu bağımlılıkları < / artifactId >

< versiyon > Finchley. < / version >

< tip > pom < / tür >

< dürbün > ithalat < /dürbün >

< /bağımlılık >

< / bağımlılıklar >

< / dependencyManagement >

< özellikleri >

< project.build.sourceEncoding > UTF-8 < /project.build.sourceEncoding >

< maven.compiler.source > 1.8 < /maven.compiler.source >

< maven.compiler.target > 1.8 < /maven.compiler.target >

< /özellikleri >

< bağımlılıklar >

< bağımlılık >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > Spring-boot-starter-data-redis < / artifactId >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.apache.commons < /Grup kimliği >

< artifactId > ortak havuz2 < / artifactId >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > Spring-boot-starter-web < / artifactId >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > Spring-boot-starter-cache < / artifactId >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > com.zaxxer < /Grup kimliği >

< artifactId > HikariCP < / artifactId >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > mysql < /Grup kimliği >

< artifactId > mysql-bağlayıcı-java < / artifactId >

< versiyon > 6.0.3 < / version >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.mybatis < /Grup kimliği >

< artifactId > mybatis-bahar < / artifactId >

< versiyon > 1.3.2 < / version >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.mybatis.spring.boot < /Grup kimliği >

< artifactId > mybatis-spring-boot-starter < / artifactId >

< versiyon > 1.3.2 < / version >

< /bağımlılık >

< bağımlılık >

< Grup kimliği > org.springframework.boot < /Grup kimliği >

< artifactId > yay önyükleme başlangıç testi < / artifactId >

< dürbün > Ölçek < /dürbün >

< /bağımlılık >

< / bağımlılıklar >

< / proje >

2. Yeni bir springboot başlangıç sınıfı RedisCacheApplication.java oluşturun

paket sc.redis.cache;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

ithalat

org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cache.annotation.EnableCaching;

/ **

* Daha fazla kaynak için genel hesabı takip edin: java cenneti

*

* @author Yöneticisi

*

* /

@SpringBootApplication

@EnableCaching // Önbelleğe almayı etkinleştir

@MapperScan (basePackages = "sc.redis.cache.dao")

public class RedisCacheApplication {

public static void main (String args) {

SpringApplication.run (RedisCacheApplication.class, args);

}

}

Açıklama: @MapperScan (basePackages = "sc.redis.cache.dao") Bu ek açıklamanın temel Paketleri, DAO'nun bulunduğu paketin son kaydı olmalıdır.

@MapperScan (basePackages = "sc.redis.cache") şöyle yazarsanız, testte bir hata bildirilir:

3. Yeni bir yapılandırma dosyası application.yml oluşturun

sunucu:

bağlantı noktası: 9003

bahar:

uygulama:

ad: sc-redis-cache

veri kaynağı:

driverClassName: com.mysql.jdbc.Driver

url: jdbc: mysql: // localhost: 3306 / sc? serverTimezone = UTCuseUnicode = truecharacterEncoding = UTF-8

kullanıcı adı: kök

şifre: root

tür: com.zaxxer.hikari.HikariDataSource

hikari:

minimum boşta: 5

maksimum havuz boyutu: 15

otomatik işleme: doğru

boşta kalma zaman aşımı: 30000

havuz-adı: DatebookHikariCP

maksimum ömür: 1800000

bağlantı zaman aşımı: 30000

bağlantı testi sorgusu: SEÇ 1

önbellek:

tür: REDIS

redis:

timeToLive: 200000 #Cache zaman aşımı süresi ms

cache-null-values: false # Boş değerleri önbelleğe alıp almayacağı

redis:

ana bilgisayar: 127.0.0.1

parola:

bağlantı noktası: 6379

zaman aşımı: 10000 # Bağlantı zaman aşımı süresi (milisaniye)

veritabanı: 0 # Redis varsayılan olarak 16 parçaya sahiptir, kullanılan belirli parçalar burada yapılandırılır, varsayılan değer 0'dır

marul:

havuz:

max-active: 8 # Bağlantı havuzundaki maksimum bağlantı sayısı (sınır olmadığını belirtmek için negatif bir değer kullanın) varsayılan olarak 8

max-wait: -1 # Bağlantı havuzunun maksimum engelleme bekleme süresi (sınır olmadığını belirtmek için negatif bir değer kullanın) varsayılan -1

max-idle: 8 # Bağlantı havuzundaki maksimum boşta bağlantı varsayılan olarak 8'dir

min-idle: 0 # Bağlantı havuzundaki minimum boşta bağlantı varsayılan olarak 0'dır

Kerestecilik:

seviye:

sc.redis.cache.dao: hata ayıklama

Açıklamalar: Yapılandırma dosyası, veritabanına bağlanmak için yapılandırma bilgilerini ve redis'e bağlanmak için yapılandırma bilgilerini içerir ve sql ifadelerini yazdırmak için günlük düzeyi de yapılandırılır

4. Yeni bir özel reids serileştirme yöntemi oluşturun RedisCacheSerializeConfiguration.java sınıfı

paket sc.redis.cache.config;

içe aktarma java.time.Duration;

import org.springframework.context.annotation.Bean;

org.springframework.context.annotation.Configuration dosyasını içe aktarın;

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;

@Yapılandırma

publicclass RedisCacheSerializeConfiguration {

/// **

// * ikisinden birini seç

// * Redis verilerinin varsayılan sona erme zamanını ayarlayın, @cacheable serileştirme yöntemini ayarlayın

// *

// * @dönüş

// * /

//@Fasulye

// genel RedisCacheConfiguration redisCacheConfiguration () {

// RedisCacheConfigurationconfiguration = RedisCacheConfiguration.defaultCacheConfig ();

// configuration = configuration.serializeValuesWith (RedisSerializationContext.SerializationPair.fromSerializer (valueSerializer ()))

// .entryTtl (Süre.Günler (30));

//configuration.serializeKeysWith (RedisSerializationContext.SerializationPair.fromSerializer (keySerializer ()));

// konfigürasyonu döndür;

//}

/ **

* ikisinden birini seçin

* Redis verilerinin varsayılan sona erme süresini ayarlayın, @cacheable serileştirme yöntemini ayarlayın

*

* @param connectionFactory

* @dönüş

* /

@Fasulye

public RedisCacheManager cacheManager (RedisConnectionFactory connectionFactory) {

RedisCacheConfigurationconfig = RedisCacheConfiguration.defaultCacheConfig (). EntryTtl (Duration.ofDays (30))

.serializeKeysWith (RedisSerializationContext.SerializationPair.fromSerializer (keySerializer ()))

.serializeValuesWith (RedisSerializationContext.SerializationPair.fromSerializer (valueSerializer ()))

.disableCachingNullValues ();

RedisCacheManager redisCacheManager = RedisCacheManager.builder (connectionFactory) .cacheDefaults (config)

.transactionAware (). build ();

System.out.println ("Özel RedisCacheManager yüklendi");

returnredisCacheManager;

}

özel RedisSerializer < Dize > keySerializer () {

returnnewStringRedisSerializer ();

}

özel RedisSerializer < Nesne > valueSerializer () {

returnnewGenericJackson2JsonRedisSerializer ();

}

}

5. Lütfen başlangıç ile ilgili sınıflar için kaynak koduna bakın, dizin yapısı aşağıdaki gibidir

6, birim test sınıfı yaz

paket sc.redis.cache;

org.junit.Test'i içe aktar;

import org.junit.runner.RunWith;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

sc.redis.cache.model.User'ı içe aktar;

sc.redis.cache.service.UserService'i içe aktar;

@RunWith (SpringRunner.class)

@Hayalhanemersin

publicclass TestRedis {

privatestaticfinal Logger logger = LoggerFactory.getLogger (TestRedis.class);

@Autowired

privateUserService userService;

@Ölçek

publicvoid ekle () {

Kullanıcı u = yeni Kullanıcı ();

u.setId (4L);

u.setUserName ("huangjinjin");

u.setPosition ("cto");

u.setAge (24);

userService.addUser (u);

}

@Ölçek

publicvoid get () {

Kullanıcı u = userService.getUser (4L);

logger.debug ("userName =" + u.getUserName ());

}

}

7. Birim testi gerçekleştirin

Veritabanına bir veri parçası eklemek için add yöntemini çalıştırın:

Günlük:

Get yöntemini ilk kez çalıştırın:

Günlük:

Redis'i görüntülemek için redis-cli kullanın, veriler önbelleğe eklenmiştir

Get yöntemini ikinci kez çalıştırın:

Günlük:

Verilerin redis'ten elde edildiğini ve verileri sorgulamak için veri tabanına gitmediğini belirten herhangi bir sql ifadesinin basılmadığı tespit edildi.

SpringCloud Dağıtılmış SpringCloud 2.x Serisi SpringSession Oturumu
önceki
Kadın net kırmızı çiçek 30 bin burun estetiği ameliyatı sonrası çirkin arkadaşlar tarafından güldü, öfkeyle açığa çıktı: düğün randevum ertelendi
Sonraki
Spring Cloud 2.x serisi devre kesici kümesi izleme Tur.
Wu Xin, bir takım elbise ve güneş gözlüğü, havalı ve şık bir şekilde günlük giyimini paylaşıyor
SpringCloud2.x serisinin Springboot entegrasyonu F
Yetmiş yaşındaki adam drone aksesuarlarını çaldı ve satmak istedi
SpringCloud2.x serisinin Springboot entegrasyonu.
Guo Isırma ve nişanlısı sık sık şefkat gösterirler ve aşktan bu kadar gurur duyan her zaman çok güzel olmuştur.
Yu Hua tarafından imzalanmış bir kitap alma şansı elde etmek için bir mesaj bırakın! Zhuhai Dünya Kitap Gününe en çok hangisine katılmak istiyorsunuz?
Adam iki aylık bebeğin bezini değiştirdi ancak 20 kırığa neden oldu
"One Belt One Road" ruhunun altını çizen Şili Şarap Derneği Turu Sergisi Pekin'de Düzenlendi.
Gao Yuanyuan'ın hamile göbek fotoğrafları ortaya çıktı, kocası Zhao Youting'e dikkatle yardım edildi
Nanning, bir kadının arkadaş çevresinde "ifşa edilmiş hayatı" aslında hırsızları kışkırtıyor ve 100.000 yuan ödedikten sonra buradan kurtulabiliyor.
Spring Cloud 2.x serisi springboot entegre ActiveMQ
To Top