Melaksanakan caching dalam aplikasi Java menggunakan Redis
Pasang dan jalankan Redis, dan mulakan perkhidmatan Redis menggunakan arahan Docker; 2. Tambah dependensi Redis untuk boot Jedis atau Spring dalam projek Maven; 3. Gunakan klien Jedis untuk menyambungkan Redis dan melaksanakan SetEx untuk menetapkan cache dengan masa tamat, perhatikan untuk menutup sambungan atau menggunakan kolam sambungan; 4. Konfigurasi parameter redis pada boot musim bunga melalui application.yml, aktifkan anotasi @enableCaching dan gunakan @cacheable, @cacheput, dan @cacheEvict untuk melaksanakan caching peringkat kaedah; 5. Sesuaikan semula Redistemplate untuk menggunakan Jackson2JSonRedisserializer untuk bersiri objek kompleks ke dalam format JSON untuk meningkatkan kebolehbacaan dan prestasi; 6. Ikuti Amalan Terbaik: Tetapkan TTL Untuk mengelakkan kebocoran memori, gunakan nama -nama utama yang bermakna, mengendalikan cache terlepas dengan anggun, gunakan kolam sambungan dalam persekitaran pengeluaran, dan memantau keadaan redis. Melalui langkah-langkah ini, aplikasi Java dapat mengintegrasikan cache Redis dengan cekap, dengan ketara mengurangkan beban pangkalan data dan meningkatkan kelajuan tindak balas, akhirnya mencapai lapisan akses data berprestasi tinggi.
Caching dalam aplikasi Java dapat meningkatkan prestasi dengan ketara dengan mengurangkan beban pangkalan data dan mempercepatkan masa tindak balas. Redis adalah salah satu kedai data dalam memori yang paling popular yang digunakan untuk caching kerana kelajuan, fleksibiliti, dan set ciri yang kaya. Berikut adalah cara melaksanakan caching berasaskan Redis dalam aplikasi Java.

1. Sediakan redis dan kebergantungan
Pertama, pastikan Redis dipasang dan berjalan. Anda boleh memuat turunnya dari redis.io atau menggunakan Docker:
Docker Run -P 6379: 6379 -Nama Redis -server -d Redis
Kemudian, tambahkan kebergantungan yang diperlukan untuk pom.xml
anda (untuk maven):

<geterlihat> <groupId> redis.clients </groupId> <stistfactid> Jedis </artifactid> <version> 4.5.0 </versi> <!-Gunakan stabil terkini-> </ketergantungan>
Sebagai alternatif, jika anda menggunakan Spring Boot, termasuk:
<geterlihat> <groupId> org.springframework.boot </groupId> <stifactid> Spring-Boot-Starter-Data-Redis </artifactid> </ketergantungan>
2. Sambungkan ke Redis menggunakan Jedis (mandiri)
Jedis adalah pelanggan Redis yang ringan untuk Java. Berikut adalah contoh mudah untuk menyambung dan menggunakan Redis:

import redis.clients.jedis.jedis; Rediscache kelas awam { Jedis Jedis swasta; public redische () { this.jedis = New Jedis ("localhost", 6379); } set void awam (kunci rentetan, nilai rentetan) { Jedis.setex (Key, 3600, nilai); // cache selama 1 jam } rentetan awam get (kunci rentetan) { kembali jedis.get (kunci); } public void close () { jika (jedis! = null) { jedis.close (); } } }
-
setex(key, seconds, value)
menetapkan kunci dengan masa tamat (TTL), yang penting untuk mengelakkan data basi. - Sentiasa tutup sambungan atau gunakan kolam sambungan dalam pengeluaran.
3. Gunakan Redis dengan Spring Boot (disyorkan)
Spring Boot memudahkan integrasi Redis dengan caching berasaskan auto dan anotasi.
Konfigurasikan application.yml
:
Spring: Redis: Tuan rumah: Localhost Pelabuhan: 6379 Cache: Jenis: Redis Redis: Masa-ke-Live: 3600000 # 1 jam dalam juta saat
Dayakan caching:
Tambahkan @EnableCaching
ke kelas aplikasi utama anda:
@Springbootapplication @EnableCaching Permohonan Kelas Awam { public static void main (string [] args) { SpringApplication.run (application.class, args); } }
Gunakan anotasi caching:
Sapukan @Cacheable
, @CachePut
, dan @CacheEvict
pada kaedah perkhidmatan:
@Service UserService Kelas Awam { @Cacheable (nilai = "pengguna", key = "#id") pengguna awam getUserbyId (id panjang) { System.out.println ("mengambil pengguna dari db:" id); // simulasi panggilan db kembali userrepository.findbyId (id) .orelse (null); } @Cacheput (nilai = "pengguna", key = "#user.id") UpdateUser Pengguna Awam (Pengguna Pengguna) { // kemas kini pengguna dan kemas kini cache kembali userrepository.save (pengguna); } @CacheEvict (nilai = "pengguna", key = "#id") public void deleteUser (id panjang) { userrepository.deletebyId (id); } }
Ini secara automatik cache hasil getUserById()
jadi panggilan berikutnya dengan ID yang sama melangkau pangkalan data.
4. Serialize objek kompleks
Secara lalai, Spring menggunakan Serialization JDK, yang tidak cekap. Sesuaikan templat Redis untuk menggunakan JSON:
@Configuration @EnableCaching kelas awam Redisconfig { @Bean redistemplate awam <string, object> redistemplate (kilang redisconnectionFactory) { Redistemplate <string, object> template = redistemplate baru <> (); template.setConnectionFactory (kilang); // Gunakan jackson2jsonredisserializer untuk membaca yang lebih baik Jackson2jsonredisserializer <user> serializer = new Jackson2jsonRedisserializer <> (user.class); template.setValueserializer (Serializer); template.setKeySerializer (StringRedisserializer baru ()); template.sethashKeyserializer (baru StringRedisserializer ()); template.sethashValueSerializer (Serializer); template.afterPropertiesset (); Templat kembali; } }
Sekarang, objek kompleks seperti User
disimpan dalam format JSON yang boleh dibaca di Redis.
5. Amalan Terbaik
- Tetapkan TTL (Masa untuk hidup): Sentiasa tetapkan tamat pada data cache untuk mengelakkan kebocoran memori.
- Gunakan kekunci yang bermakna: Kekunci Struktur Seperti
user::123
atauproduct:category:latest
. - Mengendalikan cache terlepas dengan anggun: Jika Redis turun, jatuh ke pangkalan data (dan log isu).
- Gunakan penyatuan sambungan: Dalam pengeluaran, konfigurasikan jedis atau salad dengan penyatuan.
- Pantau Redis: Gunakan
redis-cli monitor
seperti redissight untuk memeriksa penggunaan cache.
Kesimpulan
Menggunakan Redis untuk caching di Java -terutamanya dengan Spring Boot -boleh secara dramatik meningkatkan prestasi dengan perubahan kod minimum. Sama ada anda menggunakan Jedis Raw untuk kawalan baik atau caching deklaratif Spring untuk kesederhanaan, Redis menyediakan lapisan yang cepat dan boleh dipercayai antara aplikasi anda dan sumber data yang perlahan.
Pada asasnya: Sambungkan Redis, Hasil Kaedah Cache, bersiri dengan bijak, dan tamat data dengan bijak. Itulah teras.
Atas ialah kandungan terperinci Melaksanakan caching dalam aplikasi Java menggunakan Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk mengendalikan transaksi JDBC dengan betul, anda mesti terlebih dahulu mematikan mod komit automatik, kemudian melakukan pelbagai operasi, dan akhirnya melakukan atau mengembalikan semula hasilnya; 1. Panggil Conn.SetAutOcommit (palsu) untuk memulakan transaksi; 2. Melaksanakan pelbagai operasi SQL, seperti memasukkan dan mengemaskini; 3. Panggil Conn.Commit () jika semua operasi berjaya, dan hubungi conn.rollback () jika pengecualian berlaku untuk memastikan konsistensi data; Pada masa yang sama, cuba-dengan-sumber harus digunakan untuk menguruskan sumber, mengendalikan pengecualian dengan betul dan menutup sambungan untuk mengelakkan kebocoran sambungan; Di samping itu, adalah disyorkan untuk menggunakan kolam sambungan dan menetapkan mata simpan untuk mencapai rollback separa, dan menyimpan urus niaga sesingkat mungkin untuk meningkatkan prestasi.

Gunakan kelas dalam pakej Java.Time untuk menggantikan kelas lama dan kelas kalendar; 2. Dapatkan tarikh dan masa semasa melalui LocalDate, LocalDateTime dan Tempatan Tempatan; 3. Buat tarikh dan masa tertentu menggunakan kaedah (); 4. Gunakan kaedah tambah/tolak untuk meningkatkan dan mengurangkan masa; 5. Gunakan zoneddatetime dan zonid untuk memproses zon waktu; 6. Format dan parse date string melalui DateTimeFormatter; 7. Gunakan segera untuk bersesuaian dengan jenis tarikh lama apabila perlu; pemprosesan tarikh di java moden harus memberi keutamaan untuk menggunakan java.timeapi, yang memberikan jelas, tidak berubah dan linear

Pra-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless scenarios.tyvelopecosyste,

DependencyInjection (DI) isadesignpatternwhereBjectsReceivedependencys ke luar, promotingloosecouplingandeasieSierTestthroughconstructor, setter, orfieldInjection.2.springframeworkusesannotationsike@component,@service, dan@autowwithjava yang berasaskan@autowwithjava

Gunakan alat analisis prestasi untuk mencari kesesakan, gunakan VisualVM atau JProfiler dalam peringkat pembangunan dan ujian, dan memberi keutamaan kepada async-profiler dalam persekitaran pengeluaran; 2. Mengurangkan penciptaan objek, menggunakan semula objek, gunakan StringBuilder untuk menggantikan splicing rentetan, dan pilih strategi GC yang sesuai; 3. Mengoptimumkan penggunaan koleksi, pilih dan preset kapasiti awal mengikut tempat kejadian; 4. Mengoptimumkan keserasian, gunakan koleksi serentak, mengurangkan granulariti kunci, dan tetapkan kolam benang dengan munasabah; 5. Tune Parameter JVM, tetapkan saiz timbunan yang munasabah dan pemungut sampah rendah dan membolehkan log GC; 6. Elakkan refleksi di peringkat kod, ganti kelas pembalut dengan jenis asas, penangguhan permulaan, dan gunakan akhir dan statik; 7. Ujian dan Pemantauan Prestasi Berterusan, digabungkan dengan JMH

THEJVMenableSjava's "Writeonce, Runanywhere" keupayaanByExecutingByteCodeThroughFourMaincomponents: 1.TheClassloadersubsystemloads, pautan, danInitializes.ClassFilesusingBootstrap, Extension, andapplicationClassloaders, EnsuringseCureAndlazyCon

Adeadlockinjaoccurswhentwoormorethreadsareblockedforever, eachwaitingforaresourceHeldByTheother, biasanyaduetoculularwaitcausedbyinconsistentlockordering;

Memilih Stack Teknologi React Java Springboot boleh membina aplikasi web stack yang stabil dan cekap, sesuai untuk sistem peringkat perusahaan kecil dan sederhana. 2. Backend menggunakan springboot untuk cepat membina Restfulapi. Komponen teras termasuk SpringWeb, SpringDatajpa, Springsecurity, Lombok dan Swagger. Pemisahan depan dicapai melalui @RestController yang mengembalikan data JSON. 3. Front-end menggunakan React (bersempena dengan Vite atau CreeReActApp) untuk membangunkan antara muka responsif, menggunakan AXIOS untuk memanggil API back-end, dan Reactrouter
