Jadual Kandungan
2. Sambungkan ke Redis menggunakan Jedis (mandiri)
3. Gunakan Redis dengan Spring Boot (disyorkan)
Konfigurasikan application.yml :
Dayakan caching:
Gunakan anotasi caching:
4. Serialize objek kompleks
Kesimpulan
Rumah Java javaTutorial Melaksanakan caching dalam aplikasi Java menggunakan Redis

Melaksanakan caching dalam aplikasi Java menggunakan Redis

Aug 07, 2025 am 05:11 AM

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.

Melaksanakan caching dalam aplikasi Java menggunakan Redis

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.

Melaksanakan caching dalam aplikasi Java menggunakan Redis

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):

Melaksanakan caching dalam aplikasi Java menggunakan Redis
 <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:

Melaksanakan caching dalam aplikasi Java 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 atau product: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!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1600
276
Bagaimana menangani transaksi di Java dengan JDBC? Bagaimana menangani transaksi di Java dengan JDBC? Aug 02, 2025 pm 12:29 PM

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.

Bagaimana untuk bekerja dengan kalendar di Jawa? Bagaimana untuk bekerja dengan kalendar di Jawa? Aug 02, 2025 am 02:38 AM

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

Membandingkan kerangka Java: Spring Boot vs Quarkus vs Micronaut Membandingkan kerangka Java: Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

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

Menguasai Suntikan Ketergantungan di Jawa dengan Spring dan Guice Menguasai Suntikan Ketergantungan di Jawa dengan Spring dan Guice Aug 01, 2025 am 05:53 AM

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

Pengoptimuman prestasi java dan teknik profil Pengoptimuman prestasi java dan teknik profil Jul 31, 2025 am 03:58 AM

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

Memahami dalaman Mesin Maya Java (JVM) Memahami dalaman Mesin Maya Java (JVM) Aug 01, 2025 am 06:31 AM

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

Apakah kebuntuan di Java dan bagaimana anda boleh menghalangnya? Apakah kebuntuan di Java dan bagaimana anda boleh menghalangnya? Aug 23, 2025 pm 12:55 PM

Adeadlockinjaoccurswhentwoormorethreadsareblockedforever, eachwaitingforaresourceHeldByTheother, biasanyaduetoculularwaitcausedbyinconsistentlockordering;

Pembangunan Web Stack Penuh dengan Java, Spring Boot, dan React Pembangunan Web Stack Penuh dengan Java, Spring Boot, dan React Jul 31, 2025 am 03:33 AM

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

See all articles