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.
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.
Spring Boot memudahkan untuk menambah caching pada aplikasi dengan memanfaatkan anotasi @EnableCaching dan menyediakan abstraksi mudah untuk pengurusan cache.
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); } }
Ini membolehkan infrastruktur caching Spring, yang akan mencari anotasi caching pada kaedah anda untuk mengurus entri 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>
Dalam fail application.properties anda, konfigurasikan sambungan pelayan Redis:
spring.cache.type=redis spring.redis.host=localhost spring.redis.port=6379
Nota: Pastikan anda menjalankan Redis pada mesin setempat anda atau menyambung ke perkhidmatan Cloud Redis.
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); } }
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>
Strategi Caching
Untuk memanfaatkan caching sepenuhnya, adalah penting untuk memilih strategi caching yang betul. Berikut ialah beberapa pendekatan untuk dipertimbangkan:
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
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.
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.
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:
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!