Rumah > Java > javaTutorial > teks badan

Meningkatkan Prestasi Bahagian Belakang dengan Caching dalam But Spring

Barbara Streisand
Lepaskan: 2024-11-15 17:11:02
asal
246 orang telah melayarinya

Improving Backend Performance with Caching in Spring Boot

Dalam dunia hari ini, prestasi aplikasi adalah kritikal. Pengguna mengharapkan masa tindak balas yang cepat, terutamanya dalam aplikasi trafik tinggi yang kependaman boleh membuat atau memecahkan pengalaman pengguna. Caching ialah salah satu cara paling berkesan untuk meningkatkan prestasi bahagian belakang, terutamanya apabila berurusan dengan operasi pengambilan data yang berulang atau mahal. Dalam siaran ini, kami akan menyelami caching dengan Spring Boot dan membincangkan pelbagai strategi caching dan petua pelaksanaan untuk meningkatkan kelajuan aplikasi anda.

Mengapa Caching?

Caching membolehkan aplikasi menyimpan data buat sementara waktu, mengurangkan masa yang diperlukan untuk mendapatkan semula data yang kerap diakses daripada pangkalan data atau perkhidmatan luaran. Dengan mengurangkan akses pangkalan data langsung, caching membantu menurunkan beban pelayan, mengoptimumkan penggunaan rangkaian dan, yang paling penting, mempercepatkan masa tindak balas.

Kes penggunaan biasa untuk caching termasuk:

  • Mengambil data statik atau jarang ditukar berulang kali.
  • Memproses hasil pengiraan yang kompleks dan berkos tinggi.
  • Menyimpan sesi pengguna atau token pengesahan.
  • Menyediakan Caching dalam But Spring

Spring Boot memudahkan untuk menambah caching pada aplikasi dengan memanfaatkan anotasi @EnableCaching dan menyediakan abstraksi mudah untuk pengurusan cache.

Langkah 1: Dayakan Caching dalam Aplikasi But Spring Anda

Untuk bermula, dayakan caching dengan menambahkan @EnableCaching pada kelas aplikasi utama anda:

@SpringBootApplication
@EnableCaching
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Salin selepas log masuk
Salin selepas log masuk

Ini membolehkan infrastruktur caching Spring, yang akan mencari anotasi caching pada kaedah anda untuk mengurus entri cache.

Langkah 2: Menambah Pembekal Cache

Spring Boot menawarkan pelbagai penyedia cache, termasuk:

ConcurrentHashMap (lalai): Sesuai untuk aplikasi mudah atau caching setempat.
Ehcache: Cache dalam memori yang popular dengan sokongan kuat untuk aplikasi Java.
Redis: Sesuai untuk aplikasi yang diedarkan kerana keupayaan struktur data dalam ingatan rangkaiannya.
Hazelcast, Kafein, Memcached, dsb.
Mari gunakan Redis sebagai pembekal cache kami di sini. Tambahkan kebergantungan Redis pada pom.xml anda:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Salin selepas log masuk
Salin selepas log masuk

Dalam fail application.properties anda, konfigurasikan sambungan pelayan Redis:

spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379
Salin selepas log masuk
Salin selepas log masuk

Nota: Pastikan anda menjalankan Redis pada mesin setempat anda atau menyambung ke perkhidmatan Cloud Redis.

Langkah 3: Menggunakan Anotasi Cache

Dengan caching didayakan dan pembekal dikonfigurasikan, anda boleh mula menggunakan anotasi caching pada kaedah yang mendapat manfaat daripada caching. Anotasi yang paling biasa digunakan ialah @Cacheable.

Contoh @Cacheable

Gunakan @Cacheable pada kaedah untuk menyimpan hasil dalam cache. Berikut ialah contoh menggunakan perkhidmatan yang mengambil data pengguna:

@SpringBootApplication
@EnableCaching
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kaedah getUserById dicache, menyimpan objek pengguna dalam cache "pengguna" oleh userId. Panggilan berikutnya dengan userId yang sama akan mengembalikan nilai cache, memintas kelewatan simulateSlowService().

Menggunakan @CachePut dan @CacheEvict

@CachePut: Mengemas kini cache tanpa melangkau pelaksanaan kaedah.
@CacheEvict: Mengalih keluar masukan daripada cache, berguna untuk memastikan data cache sentiasa segar.
Contohnya, gunakan @CacheEvict apabila mengemas kini atau memadam pengguna:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Salin selepas log masuk
Salin selepas log masuk

Strategi Caching
Untuk memanfaatkan caching sepenuhnya, adalah penting untuk memilih strategi caching yang betul. Berikut ialah beberapa pendekatan untuk dipertimbangkan:

1. Caching Time-to-Live (TTL).

Konfigurasikan TTL pada entri cache untuk tamat tempoh secara automatik selepas tempoh yang ditetapkan. Ini menghalang data basi daripada kekal dalam cache, yang amat berguna untuk data yang kerap dikemas kini.

Dalam Redis, anda boleh menetapkan TTL seperti berikut dalam konfigurasi anda:

spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379
Salin selepas log masuk
Salin selepas log masuk

2. Corak Mengetepikan Cache

Dalam corak ini, aplikasi menyemak cache sebelum mendapatkan semula data daripada pangkalan data. Jika data tidak ditemui dalam cache ("cache miss"), data itu diambil daripada pangkalan data, menyimpan hasil cache dan mengembalikannya. Ini adalah pendekatan biasa dan mudah dilaksanakan dengan @Cacheable.

3. Caching Tulisan dan Tulis di belakang

Tulis: Cache dikemas kini pada masa yang sama dengan pangkalan data.
Tulis di belakang: Cache dikemas kini serta-merta, tetapi pangkalan data dikemas kini kemudian dalam satu kelompok.
Pendekatan ini membantu apabila anda mahukan konsistensi data antara cache dan pangkalan data.

Memantau Prestasi Cache

Adalah penting untuk memantau prestasi cache untuk memastikan ia memberikan manfaat yang diharapkan. Anda boleh menjejaki hits cache, terlepas dan pengusiran untuk mengenal pasti sebarang kesesakan. Alat biasa untuk pemantauan termasuk:

  1. Redis CLI: Pantau redis cache hits/terlepas dalam masa nyata.
  2. Spring Boot Actuator: Mendedahkan metrik cache untuk pemantauan dan pengurusan.
  3. Prometheus dan Grafana: Jejaki dan gambarkan metrik Redis dan Spring Boot.

Perangkap Caching Biasa yang Perlu Dielakkan

  1. Caching Data Terlalu Banyak: Caching data yang terlalu besar boleh mengakibatkan penggunaan memori yang tinggi, menafikan peningkatan prestasi.
  2. Akses Jarang: Caching data yang jarang diakses mungkin tidak berbaloi kerana ia tidak mengurangkan masa perolehan dengan ketara.
  3. Isu Data Lapuk: Jika data kerap berubah, tetapkan TTL untuk mengelak daripada menyampaikan maklumat lapuk.

Caching ialah alat yang berkuasa untuk meningkatkan prestasi bahagian belakang, dan Spring Boot menjadikannya mudah untuk dilaksanakan. Dengan memanfaatkan anotasi caching seperti @Cacheable, @CacheEvict, dan menggunakan strategi caching yang sesuai, anda boleh mengurangkan masa respons dengan ketara, menurunkan beban pelayan dan meningkatkan keseluruhan pengalaman pengguna. Sama ada anda bekerja dengan Redis, Ehcache atau pembekal cache yang lain, caching ialah tambahan yang berharga kepada mana-mana aplikasi berprestasi tinggi.

Mulakan percubaan dengan caching dalam aplikasi Spring Boot anda dan lihat prestasi anda bertambah baik!

Atas ialah kandungan terperinci Meningkatkan Prestasi Bahagian Belakang dengan Caching dalam But Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan