Rumah > pangkalan data > Redis > teks badan

Cara menggunakan cache terpusat Redis dalam Boot Spring

PHPz
Lepaskan: 2023-05-26 10:49:05
ke hadapan
1502 orang telah melayarinya

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;
    }
}
Salin selepas log masuk

Pelaksanaan akses data entiti pengguna (merangkumi anotasi cache)

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

@Cacheable
    User findByName(String name);


}
Salin selepas log masuk

(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>
Salin selepas log masuk

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());
    }


}
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!