Konfigurasi Berbasis Properti Spring Data Redis

1. Ikhtisar

Salah satu daya tarik utama Spring Boot adalah seringnya ia mengurangi konfigurasi pihak ketiga menjadi hanya beberapa properti.

Dalam tutorial ini, kita akan melihat bagaimana Spring Boot menyederhanakan bekerja dengan Redis.

2. Mengapa Redis?

Redis adalah salah satu penyimpanan struktur data dalam memori yang paling populer. Untuk alasan ini, ini dapat digunakan sebagai database, cache, dan perantara pesan.

Dari segi performa, ini terkenal karena waktu tanggapnya yang cepat. Hasilnya, ini dapat melayani ratusan ribu operasi per detik dan mudah diskalakan.

Dan, itu berpasangan dengan baik dengan aplikasi Spring Boot . Misalnya, kita dapat menggunakannya sebagai cache dalam arsitektur layanan mikro kita. Kami juga dapat menggunakannya sebagai database NoSQL.

3. Menjalankan Redis

Untuk memulai, mari buat instance Redis menggunakan image Docker resminya.

$ docker run -p 16379:6379 -d redis:6.0 redis-server --requirepass "mypass"

Di atas, kami baru saja memulai instance Redis pada port 16379 dengan kata sandi mypass .

4. Pemula

Spring memberi kami dukungan besar untuk menghubungkan aplikasi Spring Boot kami dengan Redis menggunakan Spring Data Redis.

Jadi, selanjutnya, mari pastikan kita memiliki dependensi spring-boot-starter-data-redis di pom.xml kita :

 org.springframework.boot spring-boot-starter-data-redis 2.2.6.RELEASE 

5. Selada

Selanjutnya, mari konfigurasikan klien.

Klien Java Redis yang akan kami gunakan adalah Lettuce karena Spring Boot menggunakannya secara default. Namun, kami juga bisa menggunakan Jedis.

Apa pun itu, hasilnya adalah turunan dari RedisTemplate :

@Bean public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(connectionFactory); // Add some specific configuration here. Key serializers, etc. return template; }

6. Properti

Saat kami menggunakan Lettuce, kami tidak perlu mengkonfigurasi RedisConnectionFactory. Spring Boot melakukannya untuk kita.

Yang tersisa hanyalah menentukan beberapa properti dalam file application.properties :

spring.redis.database=0 spring.redis.host=localhost spring.redis.port=16379 spring.redis.password=mypass spring.redis.timeout=60000

Masing-masing:

  • database mengatur indeks database yang digunakan oleh pabrik koneksi
  • host adalah tempat host server berada
  • port menunjukkan port tempat server mendengarkan
  • sandi adalah sandi login untuk server, dan
  • batas waktu menetapkan batas waktu koneksi

Tentu saja, ada banyak properti lain yang dapat kita konfigurasi. Daftar lengkap properti konfigurasi tersedia di dokumentasi Spring Boot.

7. Demo

Terakhir, mari kita coba menggunakannya di aplikasi kita. Jika kita membayangkan kelas Book dan BookRepository, kita dapat membuat dan mengambil Book , menggunakan RedisTemplate untuk berinteraksi dengan Redis sebagai backend kita:

@Autowired private RedisTemplate redisTemplate; public void save(Book book) { redisTemplate.opsForValue().set(book.getId(), book); } public Book findById(Long id) { return redisTemplate.opsForValue().get(id); }

Secara default, Lettuce akan mengelola serialisasi dan deserialisasi untuk kita, jadi tidak ada lagi yang bisa dilakukan saat ini. Namun, perlu diketahui bahwa ini juga dapat dikonfigurasi.

Fitur penting lainnya adalah karena RedisTemplate aman untuk thread , jadi fitur ini akan berfungsi dengan baik di lingkungan multi-thread.

8. Kesimpulan

Di artikel ini, kami mengonfigurasi Spring Boot untuk berbicara dengan Redis melalui Lettuce. Dan, kami mencapainya dengan starter, satu konfigurasi @Bean , dan beberapa properti.

Untuk menyelesaikannya, kami menggunakan RedisTemplate agar Redis bertindak sebagai backend sederhana.

Contoh lengkapnya dapat ditemukan di GitHub.