Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan cache terpusat Redis dalam Boot Spring

Cara menggunakan cache terpusat Redis dalam Boot Spring

PHPz
PHPzke hadapan
2023-05-26 10:49:051514semak imbas

Cuba sendiri

Definisi entiti Pengguna

@Entiti @Data @NoArgsConstructor kelas awam Pengguna melaksanakan Serializable {

@Id
    @GeneratedValue
    private Long id;


    private String name;
    private Integer age;


    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}

Pelaksanaan akses data entiti pengguna (merangkumi anotasi cache)

@CacheConfig(cacheNames = "pengguna") antara muka awam UserRepository memanjangkan JpaRepository {

@Cacheable
    User findByName(String name);


}

(Kursus yang disyorkan: Tutorial musim bunga)

Mari mula mengubah projek ini:

Langkah pertama: Tambah kebergantungan berkaitan dalam pom.xml:

org.springframework.boot spring-boot-starter-data-redis

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

Dalam versi terdahulu Spring Boot 1.x, nama kebergantungan ini ialah spring-boot-starter-redis, jadi ia berbeza dari sini dalam Spring Boot 1.x tutorial asas.

Langkah 2: Tambahkan maklumat konfigurasi pada fail konfigurasi, mengambil operasi setempat sebagai contoh, sebagai contoh:

spring.redis.host=localhost spring.redis.port=6379 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=-1ms spring.redis.lettuce.pool.min-idle=0 spring.redis.lettuce.shutdown-timeout=100ms

Mengenai konfigurasi kumpulan sambungan, sila ambil perhatian: Konfigurasi kumpulan sambungan

Redis diawali dengan spring.redis.pool dalam versi 1.x Berbeza daripada Spring Boot 2.x. Dalam versi 1.x, jedis digunakan sebagai kumpulan sambungan, manakala dalam versi 2.x, lettuce digunakan sebagai kumpulan sambungan Konfigurasi di atas adalah semua nilai lalai mengikut situasi penempatan dan keperluan perniagaan .

Mari cuba ujian unit lagi:

@Slf4j. @RunWith(SpringRunner.class) @SpringBootTest kelas awam Chapter54ApplicationTests {

@Autowired
    private UserRepository userRepository;


    @Autowired
    private CacheManager cacheManager;


    @Test
    public void test() throws Exception {
        System.out.println("CacheManager type : " + cacheManager.getClass());


        // 创建1条记录
        userRepository.save(new User("AAA", 10));


        User u1 = userRepository.findByName("AAA");
        System.out.println("第一次查询:" + u1.getAge());


        User u2 = userRepository.findByName("AAA");
        System.out.println("第二次查询:" + u2.getAge());
    }


}

Melaksanakan output ujian boleh mendapat:

Jenis CacheManager: class org.springframework.data.redis.cache.RedisCacheManager Hibernate: pilih next_val sebagai id_val daripada hibernate_sequence untuk kemas kini Hibernate: kemas kini hibernate_sequence set next_val= ? Hibernate: masukkan ke dalam nilai pengguna (umur, nama, id) (?, ?, ?) 12-08-2020 16:25:26.954 INFO 68282 --- [ utama] io.lettuce.core.EpollProvider : Bermula tanpa perpustakaan epoll pilihan 12-08-2020 16:25:26.955 INFO 68282 --- [ utama] io.lettuce.core.KqueueProvider : Bermula tanpa perpustakaan kqueue pilihan Hibernate: pilih pengguna0.id sebagai id10, pengguna0_.umur sebagai umur20, pengguna0_.nama sebagai nama30 daripada pengguna pengguna0 di mana pengguna0.name=? Soalan pertama: 10 Pertanyaan kedua: 10

(Kelas mikro yang disyorkan: Kelas mikro musim bunga)

Anda boleh lihat:

  1. Barisan pertama output

    ialah CacheManager type bukannya org.springframework.data.redis.cache.RedisCacheManager dalam artikel sebelumnya EhCacheCacheManager

  2. Semasa pertanyaan kedua, tiada pernyataan SQL dikeluarkan, jadi cache digunakan untuk mendapatkan

    <.>

Atas ialah kandungan terperinci Cara menggunakan cache terpusat Redis dalam Boot Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam